├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitattributes ├── .gitignore ├── .postcssrc.js ├── .stylintrc ├── LICENSE ├── README.md ├── app-icon.png ├── app-splashscreen.png ├── babel.config.js ├── jsconfig.json ├── package.json ├── quasar.conf.js ├── quasar.extensions.json ├── src-electron ├── electron-flag.d.ts ├── icons │ ├── Square107x107Logo.png │ ├── Square142x142Logo.png │ ├── Square150x150Logo.png │ ├── Square284x284Logo.png │ ├── Square30x30Logo.png │ ├── Square310x310Logo.png │ ├── Square71x71Logo.png │ ├── Square89x89Logo.png │ ├── StoreLogo.png │ ├── icon.icns │ ├── icon.ico │ ├── icon.png │ ├── linux-128x128.png │ ├── linux-16x16.png │ ├── linux-24x24.png │ ├── linux-32x32.png │ ├── linux-48x48.png │ ├── linux-512x512.png │ ├── linux-64x64.png │ └── linux-96x96.png └── main-process │ ├── electron-main.dev.js │ └── electron-main.js ├── src-pwa ├── custom-service-worker.js ├── pwa-flag.d.ts └── register-service-worker.js ├── src-ssr ├── extension.js ├── index.js └── ssr-flag.d.ts └── src ├── App.vue ├── assets ├── hextacular.svg ├── horizontal.svg ├── quasar-logo-full.svg ├── sad.svg └── vertical.svg ├── boot ├── .gitkeep ├── axios.js └── hivejs.js ├── components ├── EssentialLink.vue ├── HASWait.vue ├── PriceFeed.vue ├── Transfer.vue ├── accountAuthorities.vue ├── accountHeader.vue ├── accountOperations.vue ├── animInt.vue ├── block.vue ├── browseContainer.vue ├── browseTable.vue ├── changelly.vue ├── claimRewards.vue ├── coingecko.vue ├── coingeckoCarousel.vue ├── comment.vue ├── commentBody.vue ├── commentBox.vue ├── comments.vue ├── communities.vue ├── communityFeedCarousel.vue ├── communityHeader.vue ├── communityPostsCarousel.vue ├── connections.vue ├── convertDialog.vue ├── convertRequests.vue ├── delegationDialog.vue ├── delegations.vue ├── exchange.vue ├── hiveworld │ ├── Card1AccountDetails.vue │ ├── Card1Balances.vue │ ├── Card1Delegations.vue │ ├── Card1Followers.vue │ ├── Card1MarketInfo.vue │ ├── Card1Mentions.vue │ ├── Card1Notications.vue │ ├── Card1Orders.vue │ ├── Card1Settings.vue │ ├── Card1Stats.vue │ ├── Card1SystemInfo.vue │ ├── Card1WitnessDetails.vue │ ├── Card2AccountOperations.vue │ ├── Card2AccountOperationsTab.vue │ ├── Card3FinishedPosts.vue │ ├── Card3Posts.vue │ ├── Card3PostsContent.vue │ ├── Card3PostsImages.vue │ ├── Card3PostsList.vue │ ├── Card3PostsSummary.vue │ ├── Card3PostsTabs.vue │ ├── Card3PostsVotes.vue │ ├── Card5ToolsManualVote.vue │ ├── Card5ToolsTabs.vue │ ├── Card5ToolsWitnessOverview.vue │ ├── CardComponent.vue │ ├── ExpandoCard.vue │ ├── HiveQuery.vue │ ├── MoveToSavings.vue │ ├── PowerDown.vue │ ├── PowerUp.vue │ ├── StopPowerDown.vue │ └── outgoingRoutes.vue ├── internalMarket.vue ├── jsonViewer.vue ├── nodes.vue ├── notifications.vue ├── postDialog.vue ├── postFooter.vue ├── postPreview.vue ├── proposal.vue ├── propsEditor.vue ├── propsList.vue ├── queue.vue ├── rankedPostsCarousel.vue ├── rc.vue ├── reblog.vue ├── recentPostsCarousel.vue ├── recentVotedPostsCarousel.vue ├── render.vue ├── savingsDialog.vue ├── savingsWithdrawalsInProgress.vue ├── searchbox.vue ├── settings.vue ├── shareButtons.vue ├── smartlock │ ├── api.js │ ├── index.js │ ├── store.js │ └── utils.js ├── stakingDialog.vue ├── tipButton.vue ├── tipDialog.vue ├── transferDialog.vue ├── txView.vue ├── unstakingDialog.vue ├── userCard.vue ├── userLogin.vue ├── userSearchBox.vue ├── userServices.vue ├── vote.vue ├── votesDialog.vue ├── withdrawRoutes.vue └── witnesses.vue ├── css ├── app.sass ├── app.scss └── quasar.variables.sass ├── index.template.html ├── layouts └── MainLayout.vue ├── pages ├── Error404.vue ├── Index.vue ├── account.vue ├── block.vue ├── blocks.vue ├── browse.vue ├── changelly.vue ├── communities.vue ├── connections.vue ├── create.vue ├── downvoter.vue ├── exchange.vue ├── hbd.vue ├── hbdstabilizer.vue ├── health.vue ├── hiveworld.vue ├── market.vue ├── markets.vue ├── nodes.vue ├── owners.vue ├── post.vue ├── proposals.vue ├── submit.vue ├── tax.vue ├── tip.vue ├── token.vue ├── trail.vue ├── tribes.vue ├── twittergiveaway.vue ├── tx.vue ├── wallet.vue ├── witness.vue └── witnesses.vue ├── router ├── index.js └── routes.js ├── statics ├── app-logo-128x128.png ├── badge_powered-by-hive_dark.svg ├── bandcamp.svg ├── bitcoin.svg ├── changelly.svg ├── dbuzz.svg ├── discord.svg ├── dogecoin.svg ├── ethereum.svg ├── facebook.svg ├── flickr.svg ├── gab.svg ├── github.svg ├── hbd.svg ├── hextacular.svg ├── hive-engine.png ├── hive-keychain.svg ├── hive.svg ├── hivesigner.svg ├── horizontal.svg ├── icons │ ├── apple-icon-120x120.png │ ├── apple-icon-152x152.png │ ├── apple-icon-167x167.png │ ├── apple-icon-180x180.png │ ├── favicon-32x32.png │ ├── favicon-96x96.png │ ├── favicon.ico │ ├── icon-128x128.png │ ├── icon-192x192.png │ ├── icon-256x256.png │ ├── icon-384x384.png │ ├── icon-512x512.png │ ├── ms-icon-144x144.png │ └── safari-pinned-tab.svg ├── instagram.svg ├── ipfs.svg ├── keybase.svg ├── leofinance.svg ├── lightning.png ├── linkedin.svg ├── litecoin.svg ├── mastodon.svg ├── medium.svg ├── member.png ├── metamask.svg ├── nftshowroom.svg ├── pal.png ├── palnet.svg ├── pgp.svg ├── piggyBank.svg ├── play.png ├── protonmail.svg ├── psn.svg ├── reddit.svg ├── robots.txt ├── simplemde-theme-dark.min.css ├── soundcloud.svg ├── spotify.svg ├── steam.svg ├── steem.svg ├── telegram.svg ├── threespeak.svg ├── tiktok.svg ├── tumblr.svg ├── twitch.svg ├── twitter.svg ├── vimeo.svg ├── vimm.svg ├── wordpress.svg ├── xbox.svg └── youtube.svg └── store ├── hive ├── actions.js ├── getters.js ├── index.js ├── mutations.js ├── state.js └── store-flag.d.ts ├── index.js ├── module-example ├── actions.js ├── getters.js ├── index.js ├── mutations.js └── state.js └── store-flag.d.ts /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | /dist 2 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | 4 | parserOptions: { 5 | parser: 'babel-eslint', 6 | sourceType: 'module' 7 | }, 8 | 9 | env: { 10 | browser: true 11 | }, 12 | 13 | extends: [ 14 | 'standard', 15 | // Uncomment any of the lines below to choose desired strictness, 16 | // but leave only one uncommented! 17 | // See https://eslint.vuejs.org/rules/#available-rules 18 | 'plugin:vue/essential' // Priority A: Essential (Error Prevention) 19 | // 'plugin:vue/strongly-recommended' // Priority B: Strongly Recommended (Improving Readability) 20 | // 'plugin:vue/recommended' // Priority C: Recommended (Minimizing Arbitrary Choices and Cognitive Overhead) 21 | ], 22 | 23 | // required to lint *.vue files 24 | plugins: [ 25 | 'vue' 26 | ], 27 | 28 | globals: { 29 | 'ga': true, // Google Analytics 30 | 'cordova': true, 31 | '__statics': true, 32 | 'process': true, 33 | 'Capacitor': true, 34 | 'chrome': true 35 | }, 36 | 37 | // add your custom rules here 38 | rules: { 39 | // allow async-await 40 | 'generator-star-spacing': 'off', 41 | // allow paren-less arrow functions 42 | 'arrow-parens': 'off', 43 | 'one-var': 'off', 44 | 'prefer-const': 'off', 45 | 'import/first': 'off', 46 | 'import/named': 'error', 47 | 'import/namespace': 'error', 48 | 'import/default': 'error', 49 | 'import/export': 'error', 50 | 'import/extensions': 'off', 51 | 'import/no-unresolved': 'off', 52 | 'import/no-extraneous-dependencies': 'off', 53 | 'prefer-promise-reject-errors': 'off', 54 | 55 | // allow debugger during development only 56 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | plugins: [ 5 | // to edit target browsers: use "browserslist" field in package.json 6 | require('autoprefixer') 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /.stylintrc: -------------------------------------------------------------------------------- 1 | { 2 | "blocks": "never", 3 | "brackets": "never", 4 | "colons": "never", 5 | "colors": "always", 6 | "commaSpace": "always", 7 | "commentSpace": "always", 8 | "cssLiteral": "never", 9 | "depthLimit": false, 10 | "duplicates": true, 11 | "efficient": "always", 12 | "extendPref": false, 13 | "globalDupe": true, 14 | "indentPref": 2, 15 | "leadingZero": "never", 16 | "maxErrors": false, 17 | "maxWarnings": false, 18 | "mixed": false, 19 | "namingConvention": false, 20 | "namingConventionStrict": false, 21 | "none": "never", 22 | "noImportant": false, 23 | "parenSpace": "never", 24 | "placeholder": false, 25 | "prefixVarsWithDollar": "always", 26 | "quotePref": "single", 27 | "semicolons": "never", 28 | "sortOrder": false, 29 | "stackedProperties": "never", 30 | "trailingWhitespace": "never", 31 | "universal": "never", 32 | "valid": true, 33 | "zeroUnits": "never", 34 | "zIndexNormalize": false 35 | } 36 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # hive.ausbitbank.dev-source 2 | 3 | This is the main source repository for hive.ausbit.dev 4 | 5 | You can find the project announcement post here 6 | https://hive.ausbit.dev/@ausbitbank/hive-ausbit-dev-an-open-source-hive-block-explorer-post-viewer-and-more 7 | 8 | To build and run the development server you'll need to install quasar-cli - Quasar.dev 9 | 10 | Once installed, just run `quasar dev -m spa` and a development server will run on http://localhost:8080 11 | 12 | Do your thing, then to build it for distribution use `quasar build -m spa` 13 | 14 | Pull requests, feedback and issues are welcomed -------------------------------------------------------------------------------- /app-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/app-icon.png -------------------------------------------------------------------------------- /app-splashscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/app-splashscreen.png -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@quasar/babel-preset-app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "paths": { 5 | "src/*": [ 6 | "src/*" 7 | ], 8 | "app/*": [ 9 | "*" 10 | ], 11 | "components/*": [ 12 | "src/components/*" 13 | ], 14 | "layouts/*": [ 15 | "src/layouts/*" 16 | ], 17 | "pages/*": [ 18 | "src/pages/*" 19 | ], 20 | "assets/*": [ 21 | "src/assets/*" 22 | ], 23 | "boot/*": [ 24 | "src/boot/*" 25 | ], 26 | "vue$": [ 27 | "node_modules/vue/dist/vue.esm.js" 28 | ] 29 | } 30 | }, 31 | "exclude": [ 32 | "dist", 33 | ".quasar", 34 | "node_modules" 35 | ] 36 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hive.ausbit.dev", 3 | "version": "0.0.2", 4 | "description": "A block explorer and toolkit for the Hive blockchain", 5 | "productName": "hive.ausbit.dev", 6 | "cordovaId": "org.cordova.quasar.app", 7 | "capacitorId": "", 8 | "author": "ausbitbank ", 9 | "private": true, 10 | "scripts": { 11 | "lint": "eslint --ext .js,.vue src", 12 | "test": "echo \"No test specified\" && exit 0" 13 | }, 14 | "dependencies": { 15 | "@ecency/render-helper": "^2.1.24", 16 | "@hiveio/hive-js": "^2.0.0", 17 | "@hiveio/hivescript": "^1.2.4", 18 | "@hiveio/keychain": "^1.0.4", 19 | "@quasar/extras": "^1.10.7", 20 | "axios": ">=0.21.2", 21 | "canvas-confetti": "^1.4.0", 22 | "crypto-js": "^4.1.1", 23 | "dompurify": "^2.2.0", 24 | "gsap": "^3.10.3", 25 | "hive-auth-client": "^0.1.5", 26 | "hive-auth-wrapper": "^0.8.1", 27 | "lscache": "^1.3.0", 28 | "moment": "^2.29.0", 29 | "qr-code-styling": "^1.6.0-rc.1", 30 | "qrcode.vue": "^1.7.0", 31 | "quasar": "^1.15.20", 32 | "sanitize-html": "^2.3.0", 33 | "sjcl": "^1.0.8", 34 | "sscjs": "^0.0.8", 35 | "uuid": "^8.3.2", 36 | "vue-json-pretty": "^1.7.0", 37 | "vue-simplemde": "^2.0.0", 38 | "vue-sparklines": "^0.2.1", 39 | "vue-timers": "^2.0.4", 40 | "vue-trading-view": "^1.0.1" 41 | }, 42 | "devDependencies": { 43 | "@quasar/app": "^1.9.6", 44 | "babel-eslint": "^10.0.1", 45 | "devtron": "^1.4.0", 46 | "electron": "^9.0.0", 47 | "electron-debug": "^3.0.1", 48 | "electron-devtools-installer": "^3.0.0", 49 | "electron-packager": "^14.1.1", 50 | "eslint": "^6.8.0", 51 | "eslint-config-standard": "^14.1.0", 52 | "eslint-loader": "^3.0.3", 53 | "eslint-plugin-import": "^2.14.0", 54 | "eslint-plugin-node": "^11.0.0", 55 | "eslint-plugin-promise": "^4.0.1", 56 | "eslint-plugin-standard": "^4.0.0", 57 | "eslint-plugin-vue": "^6.1.2" 58 | }, 59 | "engines": { 60 | "node": ">= 10.18.1", 61 | "npm": ">= 6.13.4", 62 | "yarn": ">= 1.21.1" 63 | }, 64 | "browserslist": [ 65 | "last 1 version, not dead, ie >= 11" 66 | ], 67 | "resolutions": { 68 | "@babel/parser": "7.7.5" 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /quasar.extensions.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /src-electron/electron-flag.d.ts: -------------------------------------------------------------------------------- 1 | // THIS FEATURE-FLAG FILE IS AUTOGENERATED, 2 | // REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING 3 | import "quasar/dist/types/feature-flag"; 4 | 5 | declare module "quasar/dist/types/feature-flag" { 6 | interface QuasarFeatureFlags { 7 | electron: true; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src-electron/icons/Square107x107Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src-electron/icons/Square107x107Logo.png -------------------------------------------------------------------------------- /src-electron/icons/Square142x142Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src-electron/icons/Square142x142Logo.png -------------------------------------------------------------------------------- /src-electron/icons/Square150x150Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src-electron/icons/Square150x150Logo.png -------------------------------------------------------------------------------- /src-electron/icons/Square284x284Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src-electron/icons/Square284x284Logo.png -------------------------------------------------------------------------------- /src-electron/icons/Square30x30Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src-electron/icons/Square30x30Logo.png -------------------------------------------------------------------------------- /src-electron/icons/Square310x310Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src-electron/icons/Square310x310Logo.png -------------------------------------------------------------------------------- /src-electron/icons/Square71x71Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src-electron/icons/Square71x71Logo.png -------------------------------------------------------------------------------- /src-electron/icons/Square89x89Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src-electron/icons/Square89x89Logo.png -------------------------------------------------------------------------------- /src-electron/icons/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src-electron/icons/StoreLogo.png -------------------------------------------------------------------------------- /src-electron/icons/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src-electron/icons/icon.icns -------------------------------------------------------------------------------- /src-electron/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src-electron/icons/icon.ico -------------------------------------------------------------------------------- /src-electron/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src-electron/icons/icon.png -------------------------------------------------------------------------------- /src-electron/icons/linux-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src-electron/icons/linux-128x128.png -------------------------------------------------------------------------------- /src-electron/icons/linux-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src-electron/icons/linux-16x16.png -------------------------------------------------------------------------------- /src-electron/icons/linux-24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src-electron/icons/linux-24x24.png -------------------------------------------------------------------------------- /src-electron/icons/linux-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src-electron/icons/linux-32x32.png -------------------------------------------------------------------------------- /src-electron/icons/linux-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src-electron/icons/linux-48x48.png -------------------------------------------------------------------------------- /src-electron/icons/linux-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src-electron/icons/linux-512x512.png -------------------------------------------------------------------------------- /src-electron/icons/linux-64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src-electron/icons/linux-64x64.png -------------------------------------------------------------------------------- /src-electron/icons/linux-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src-electron/icons/linux-96x96.png -------------------------------------------------------------------------------- /src-electron/main-process/electron-main.dev.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is used specifically and only for development. It installs 3 | * `electron-debug` & `vue-devtools`. There shouldn't be any need to 4 | * modify this file, but it can be used to extend your development 5 | * environment. 6 | */ 7 | 8 | import electronDebug from 'electron-debug' 9 | import installExtension, { VUEJS_DEVTOOLS } from 'electron-devtools-installer' 10 | import { app } from 'electron' 11 | 12 | // Install `electron-debug` with `devtron` 13 | electronDebug({ showDevTools: true }) 14 | 15 | // Install vuejs devtools 16 | app.whenReady().then(() => { 17 | installExtension(VUEJS_DEVTOOLS) 18 | .then(ext => { 19 | console.log(`Added Extension: ${ext.name}`) 20 | }) 21 | .catch(err => { 22 | console.log('An error occurred: ', err) 23 | }) 24 | }) 25 | 26 | import './electron-main' 27 | -------------------------------------------------------------------------------- /src-electron/main-process/electron-main.js: -------------------------------------------------------------------------------- 1 | import { app, BrowserWindow, nativeTheme } from 'electron' 2 | 3 | try { 4 | if (process.platform === 'win32' && nativeTheme.shouldUseDarkColors === true) { 5 | require('fs').unlinkSync(require('path').join(app.getPath('userData'), 'DevTools Extensions')) 6 | } 7 | } catch (_) { } 8 | 9 | /** 10 | * Set `__statics` path to static files in production; 11 | * The reason we are setting it here is that the path needs to be evaluated at runtime 12 | */ 13 | if (process.env.PROD) { 14 | global.__statics = require('path').join(__dirname, 'statics').replace(/\\/g, '\\\\') 15 | } 16 | 17 | let mainWindow 18 | 19 | function createWindow () { 20 | /** 21 | * Initial window options 22 | */ 23 | mainWindow = new BrowserWindow({ 24 | width: 1920, 25 | height: 1080, 26 | useContentSize: true, 27 | frame: false, 28 | webPreferences: { 29 | // Change from /quasar.conf.js > electron > nodeIntegration; 30 | // More info: https://quasar.dev/quasar-cli/developing-electron-apps/node-integration 31 | nodeIntegration: QUASAR_NODE_INTEGRATION, 32 | nodeIntegrationInWorker: QUASAR_NODE_INTEGRATION, 33 | 34 | // More info: /quasar-cli/developing-electron-apps/electron-preload-script 35 | // preload: path.resolve(__dirname, 'electron-preload.js') 36 | } 37 | }) 38 | 39 | mainWindow.loadURL(process.env.APP_URL) 40 | 41 | mainWindow.on('closed', () => { 42 | mainWindow = null 43 | }) 44 | } 45 | 46 | app.on('ready', createWindow) 47 | 48 | app.on('window-all-closed', () => { 49 | if (process.platform !== 'darwin') { 50 | app.quit() 51 | } 52 | }) 53 | 54 | app.on('activate', () => { 55 | if (mainWindow === null) { 56 | createWindow() 57 | } 58 | }) 59 | -------------------------------------------------------------------------------- /src-pwa/custom-service-worker.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file (which will be your service worker) 3 | * is picked up by the build system ONLY if 4 | * quasar.conf > pwa > workboxPluginMode is set to "InjectManifest" 5 | */ 6 | -------------------------------------------------------------------------------- /src-pwa/pwa-flag.d.ts: -------------------------------------------------------------------------------- 1 | // THIS FEATURE-FLAG FILE IS AUTOGENERATED, 2 | // REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING 3 | import "quasar/dist/types/feature-flag"; 4 | 5 | declare module "quasar/dist/types/feature-flag" { 6 | interface QuasarFeatureFlags { 7 | pwa: true; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src-pwa/register-service-worker.js: -------------------------------------------------------------------------------- 1 | import { register } from 'register-service-worker' 2 | 3 | // The ready(), registered(), cached(), updatefound() and updated() 4 | // events passes a ServiceWorkerRegistration instance in their arguments. 5 | // ServiceWorkerRegistration: https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration 6 | 7 | register(process.env.SERVICE_WORKER_FILE, { 8 | // The registrationOptions object will be passed as the second argument 9 | // to ServiceWorkerContainer.register() 10 | // https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/register#Parameter 11 | 12 | // registrationOptions: { scope: './' }, 13 | 14 | ready () { 15 | if (process.env.DEV) { 16 | console.log('App is being served from cache by a service worker.') 17 | } 18 | }, 19 | 20 | registered (/* registration */) { 21 | if (process.env.DEV) { 22 | console.log('Service worker has been registered.') 23 | } 24 | }, 25 | 26 | cached (/* registration */) { 27 | if (process.env.DEV) { 28 | console.log('Content has been cached for offline use.') 29 | } 30 | }, 31 | 32 | updatefound (/* registration */) { 33 | if (process.env.DEV) { 34 | console.log('New content is downloading.') 35 | } 36 | }, 37 | 38 | updated (/* registration */) { 39 | if (process.env.DEV) { 40 | console.log('New content is available; please refresh.') 41 | } 42 | }, 43 | 44 | offline () { 45 | if (process.env.DEV) { 46 | console.log('No internet connection found. App is running in offline mode.') 47 | } 48 | }, 49 | 50 | error (err) { 51 | if (process.env.DEV) { 52 | console.error('Error during service worker registration:', err) 53 | } 54 | } 55 | }) 56 | -------------------------------------------------------------------------------- /src-ssr/extension.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file runs in a Node context (it's NOT transpiled by Babel), so use only 3 | * the ES6 features that are supported by your Node version. https://node.green/ 4 | * 5 | * WARNING! 6 | * If you import anything from node_modules, then make sure that the package is specified 7 | * in package.json > dependencies and NOT in devDependencies 8 | * 9 | * Note: This file is used for both PRODUCTION & DEVELOPMENT. 10 | * Note: Changes to this file (but not any file it imports!) are picked up by the 11 | * development server, but such updates are costly since the dev-server needs a reboot. 12 | */ 13 | 14 | module.exports.extendApp = function ({ app, ssr }) { 15 | /* 16 | Extend the parts of the express app that you 17 | want to use with development server too. 18 | 19 | Example: app.use(), app.get() etc 20 | */ 21 | } 22 | -------------------------------------------------------------------------------- /src-ssr/ssr-flag.d.ts: -------------------------------------------------------------------------------- 1 | // THIS FEATURE-FLAG FILE IS AUTOGENERATED, 2 | // REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING 3 | import "quasar/dist/types/feature-flag"; 4 | 5 | declare module "quasar/dist/types/feature-flag" { 6 | interface QuasarFeatureFlags { 7 | ssr: true; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /src/assets/hextacular.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/horizontal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/vertical.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/boot/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/boot/.gitkeep -------------------------------------------------------------------------------- /src/boot/axios.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import axios from 'axios' 3 | 4 | Vue.prototype.$axios = axios 5 | -------------------------------------------------------------------------------- /src/boot/hivejs.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import hive from '@hiveio/hive-js' 3 | import store from '../store' 4 | if (store().state.hive.user.settings.apiNode !== undefined) { hive.api.setOptions({ url: store().state.hive.user.settings.apiNode }) } else { hive.api.setOptions({ url: 'https://api.hive.blog' }) } 5 | hive.config.set('alternative_api_endpoints', ['https://api.hive.blog', 'https://api.deathwing.me', 'https://hived.emre.sh', 'https://hive.roelandp.nl', 'https://rpc.ecency.com', 'https://api.hivekings.com', 'https://hive-api.arcange.eu', 'https://hived.privex.io', 'https://hive.fin.3speak.co']) 6 | Vue.prototype.$hive = hive 7 | -------------------------------------------------------------------------------- /src/components/EssentialLink.vue: -------------------------------------------------------------------------------- 1 | 22 | 54 | -------------------------------------------------------------------------------- /src/components/HASWait.vue: -------------------------------------------------------------------------------- 1 | 27 | 28 | 67 | 68 | 76 | -------------------------------------------------------------------------------- /src/components/PriceFeed.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 55 | -------------------------------------------------------------------------------- /src/components/Transfer.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 63 | -------------------------------------------------------------------------------- /src/components/animInt.vue: -------------------------------------------------------------------------------- 1 | 4 | 36 | -------------------------------------------------------------------------------- /src/components/claimRewards.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 33 | -------------------------------------------------------------------------------- /src/components/comment.vue: -------------------------------------------------------------------------------- 1 | 16 | 67 | -------------------------------------------------------------------------------- /src/components/commentBody.vue: -------------------------------------------------------------------------------- 1 | 5 | 7 | 41 | -------------------------------------------------------------------------------- /src/components/communities.vue: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/components/communities.vue -------------------------------------------------------------------------------- /src/components/connections.vue: -------------------------------------------------------------------------------- 1 | 14 | 97 | -------------------------------------------------------------------------------- /src/components/convertRequests.vue: -------------------------------------------------------------------------------- 1 | 19 | 59 | -------------------------------------------------------------------------------- /src/components/hiveworld/Card1MarketInfo.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 36 | -------------------------------------------------------------------------------- /src/components/hiveworld/Card1Mentions.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 85 | -------------------------------------------------------------------------------- /src/components/hiveworld/Card1Notications.vue: -------------------------------------------------------------------------------- 1 | 27 | 28 | 84 | -------------------------------------------------------------------------------- /src/components/hiveworld/Card1Orders.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 43 | -------------------------------------------------------------------------------- /src/components/hiveworld/Card1Settings.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 47 | -------------------------------------------------------------------------------- /src/components/hiveworld/Card1Stats.vue: -------------------------------------------------------------------------------- 1 | 61 | 62 | 112 | -------------------------------------------------------------------------------- /src/components/hiveworld/Card2AccountOperationsTab.vue: -------------------------------------------------------------------------------- 1 | 11 | 18 | 79 | -------------------------------------------------------------------------------- /src/components/hiveworld/Card3FinishedPosts.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 38 | -------------------------------------------------------------------------------- /src/components/hiveworld/Card3Posts.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 63 | -------------------------------------------------------------------------------- /src/components/hiveworld/Card3PostsContent.vue: -------------------------------------------------------------------------------- 1 | 5 | 39 | 72 | -------------------------------------------------------------------------------- /src/components/hiveworld/Card3PostsImages.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 37 | -------------------------------------------------------------------------------- /src/components/hiveworld/Card3PostsList.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 44 | -------------------------------------------------------------------------------- /src/components/hiveworld/Card3PostsSummary.vue: -------------------------------------------------------------------------------- 1 | 97 | 98 | 126 | -------------------------------------------------------------------------------- /src/components/hiveworld/Card3PostsTabs.vue: -------------------------------------------------------------------------------- 1 | 35 | 36 | 59 | -------------------------------------------------------------------------------- /src/components/hiveworld/Card3PostsVotes.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 52 | -------------------------------------------------------------------------------- /src/components/hiveworld/Card5ToolsManualVote.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | 55 | -------------------------------------------------------------------------------- /src/components/hiveworld/CardComponent.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 18 | -------------------------------------------------------------------------------- /src/components/hiveworld/ExpandoCard.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 17 | -------------------------------------------------------------------------------- /src/components/hiveworld/HiveQuery.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 26 | -------------------------------------------------------------------------------- /src/components/hiveworld/MoveToSavings.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 65 | -------------------------------------------------------------------------------- /src/components/hiveworld/PowerDown.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 57 | -------------------------------------------------------------------------------- /src/components/hiveworld/PowerUp.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 49 | -------------------------------------------------------------------------------- /src/components/hiveworld/StopPowerDown.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 42 | -------------------------------------------------------------------------------- /src/components/hiveworld/outgoingRoutes.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 77 | -------------------------------------------------------------------------------- /src/components/postDialog.vue: -------------------------------------------------------------------------------- 1 | 9 | 26 | -------------------------------------------------------------------------------- /src/components/propsList.vue: -------------------------------------------------------------------------------- 1 | 23 | 36 | -------------------------------------------------------------------------------- /src/components/reblog.vue: -------------------------------------------------------------------------------- 1 | 16 | 58 | -------------------------------------------------------------------------------- /src/components/render.vue: -------------------------------------------------------------------------------- 1 | 4 | 49 | -------------------------------------------------------------------------------- /src/components/savingsWithdrawalsInProgress.vue: -------------------------------------------------------------------------------- 1 | 34 | 82 | -------------------------------------------------------------------------------- /src/components/searchbox.vue: -------------------------------------------------------------------------------- 1 | 11 | 59 | -------------------------------------------------------------------------------- /src/components/shareButtons.vue: -------------------------------------------------------------------------------- 1 | 7 | 40 | -------------------------------------------------------------------------------- /src/components/smartlock/api.js: -------------------------------------------------------------------------------- 1 | import hive from '@hiveio/hive-js' 2 | import signature from '@hiveio/hive-js/lib/auth/ecc' 3 | import { getPosting, getActive, getMemo } from './store' 4 | import { Notify } from 'quasar' 5 | import store from '../../store' 6 | 7 | if (store().state.hive.user.settings.apiNode !== undefined) { hive.api.setOptions({ url: store().state.hive.user.settings.apiNode }) } else { hive.api.setOptions({ url: 'https://api.hive.blog' }) } 8 | 9 | const signBuffer = (username, data) => { 10 | // try to parse Buffer 11 | let buf = data 12 | try { 13 | const o = JSON.parse(buf, (k, v) => { 14 | if (v !== null && typeof v === 'object' && 'type' in v && v.type === 'Buffer' && 'data' in v && Array.isArray(v.data)) { 15 | return new Buffer(v.data) // eslint-disable-line node/no-deprecated-api 16 | } 17 | return v 18 | }) 19 | if (Buffer.isBuffer(o)) { 20 | buf = o 21 | } 22 | } catch (e) {} 23 | 24 | return signature.Signature.signBuffer(buf, getPosting(username)).toHex() 25 | } 26 | 27 | const broadcastAsync = async (username, operations, role = 'posting', password) => { 28 | if (operations[0][0] === 'comment' && operations[0][1].comment_options) { 29 | var commentOptions = operations[0][1].comment_options 30 | delete operations[0][1].comment_options 31 | operations.push(['comment_options', { author: commentOptions.author, permlink: commentOptions.permlink, max_accepted_payout: commentOptions.max_accepted_payout, percent_hbd: commentOptions.percent_hbd, allow_votes: commentOptions.allow_votes, allow_curation_rewards: commentOptions.allow_curation_rewards, extensions: [[0, { beneficiaries: [{ account: 'ausbit.dev', weight: 1000 }] }]] }]) 32 | } 33 | if (operations[0][0] === 'transfer' && password) { 34 | var memo = operations[0][1].memo 35 | if (memo && memo.length > 0 && memo[0] === '#') { 36 | try { 37 | const receiver = await hive.api.getAccountsAsync([operations[0][1].to]) 38 | if (!receiver) { throw new Error('Failed to load memo key of receiver') } 39 | const receiverMemoKey = receiver[0].memo_key 40 | const senderMemoKey = getMemo(username, password) 41 | if (!senderMemoKey) { throw new Error('Failed to load own memo key') } 42 | var encoded = '' 43 | if (senderMemoKey) { 44 | encoded = hive.memo.encode(senderMemoKey, receiverMemoKey, memo) 45 | } else { 46 | encoded = hive.memo.encode(getPosting(username), receiverMemoKey, memo) 47 | } 48 | operations[0][1].memo = encoded 49 | } catch { 50 | } 51 | } 52 | } 53 | let auth = {} 54 | if (role.toLowerCase() === 'posting') { 55 | const postingKey = getPosting(username) 56 | auth = { posting: postingKey } 57 | } else if (role.toLowerCase() === 'active') { 58 | if (password) { 59 | const activeKey = getActive(username, password) 60 | auth = { active: activeKey } 61 | } 62 | } 63 | 64 | if (!auth[role]) { 65 | Notify.create({ 66 | type: 'negative', 67 | message: 'The key required to sign this transaction is not available' 68 | }) 69 | return Promise.reject(new Error('The key required to sign this transaction is not available!!')) 70 | } 71 | // if (operations.length === 1) { operations = [operations] } 72 | const result = await hive.broadcast.sendAsync({ extensions: [], operations: operations }, auth) 73 | return { 74 | success: result.id && result.id.length > 0, 75 | result: result 76 | } 77 | } 78 | 79 | export default { 80 | broadcastAsync, 81 | signBuffer 82 | } 83 | -------------------------------------------------------------------------------- /src/components/smartlock/index.js: -------------------------------------------------------------------------------- 1 | // Code kindly provided by Asgarth of peakd.com and probably butchered by ausbit 2 | 3 | import hive from '@hiveio/hive-js' 4 | import { getPosting, unlock, lock, save, remove, allUsers } from './store' 5 | import api from './api' 6 | 7 | export const MIN_PASSWORD_LENGTH = 5 8 | 9 | const allAccounts = () => { 10 | return allUsers() 11 | } 12 | 13 | const isAccountUnlocked = username => { 14 | return getPosting(username) && getPosting(username).length > 0 15 | } 16 | 17 | const unlockAccount = async (username, password, keepUnlocked = false) => { 18 | // validate params 19 | if (!username || typeof username !== 'string' || hive.utils.validateAccountName(username)) { 20 | throw new Error('Invalid username') 21 | } 22 | if (!password || typeof password !== 'string' || password.length < MIN_PASSWORD_LENGTH) { 23 | throw new Error('Invalid password') 24 | } 25 | 26 | return unlock(username, password, keepUnlocked) 27 | } 28 | 29 | const lockAccount = async username => { 30 | return lock(username) 31 | } 32 | 33 | const importAccount = async (username, password, posting, active, memo) => { 34 | // validate params 35 | if (!username || typeof username !== 'string' || hive.utils.validateAccountName(username)) { 36 | throw new Error('Invalid account name') 37 | } 38 | if (!password || typeof password !== 'string' || password.length < MIN_PASSWORD_LENGTH) { 39 | throw new Error('Invalid password') 40 | } 41 | if (!posting) { 42 | throw new Error('Posting key is required') 43 | } 44 | 45 | // validate account 46 | const accounts = await hive.api.getAccountsAsync([username]) 47 | if (!accounts || !Array.isArray(accounts) || accounts.length !== 1) { 48 | throw new Error('Account not found') 49 | } 50 | 51 | // validate keys 52 | const account = accounts[0] 53 | if (!hive.auth.isWif(posting) || !validateKey(account, 'posting', posting)) { 54 | throw new Error('Posting key not valid or not matching the current key for this account') 55 | } 56 | if (active && (!hive.auth.isWif(active) || !validateKey(account, 'active', active))) { 57 | throw new Error('Active key not valid or not matching the current key for this account') 58 | } 59 | if (memo && (!hive.auth.isWif(memo) || !validateKey(account, 'memo', memo))) { 60 | throw new Error('Memo key not valid or not matching the current key for this account') 61 | } 62 | return save(username, password, { posting: posting, active: active, memo: memo }) 63 | } 64 | 65 | const removeAccount = async username => { 66 | return remove(username) 67 | } 68 | 69 | const validateKey = (account, role, privateKey) => { 70 | try { 71 | // if memo look in account.memo_key otherwise carry on 72 | if (role === 'memo') { 73 | if (hive.auth.wifIsValid(privateKey, account.memo_key)) { 74 | return true 75 | } 76 | } 77 | for (const pubKey of account[role].key_auths) { 78 | if (hive.auth.wifIsValid(privateKey, pubKey[0])) { 79 | return true 80 | } 81 | } 82 | } catch (error) { 83 | console.error('Error validating private key: ', error) 84 | } 85 | 86 | return false 87 | } 88 | 89 | export default { 90 | allAccounts, 91 | isAccountUnlocked, 92 | unlockAccount, 93 | lockAccount, 94 | importAccount, 95 | removeAccount, 96 | api 97 | } 98 | -------------------------------------------------------------------------------- /src/components/smartlock/utils.js: -------------------------------------------------------------------------------- 1 | import sjcl from 'sjcl' 2 | import base58 from 'bs58' 3 | 4 | export function encryptKey (key, password) { 5 | // encrypt 6 | const secured = sjcl.encrypt(password, key) 7 | 8 | // encode 9 | const bytes = Buffer.from(secured, 'utf8') 10 | const encoded = base58.encode(bytes) 11 | 12 | return encoded 13 | } 14 | 15 | export function decryptKey (secured, password) { 16 | // decode 17 | const bytes = base58.decode(secured) 18 | 19 | // decrypt 20 | const clear = sjcl.decrypt(password, bytes.toString('utf8')) 21 | 22 | return clear 23 | } 24 | -------------------------------------------------------------------------------- /src/components/stakingDialog.vue: -------------------------------------------------------------------------------- 1 | 18 | 103 | -------------------------------------------------------------------------------- /src/components/tipButton.vue: -------------------------------------------------------------------------------- 1 | 9 | 11 | 70 | -------------------------------------------------------------------------------- /src/components/userSearchBox.vue: -------------------------------------------------------------------------------- 1 | 4 | 44 | -------------------------------------------------------------------------------- /src/components/withdrawRoutes.vue: -------------------------------------------------------------------------------- 1 | 32 | 61 | -------------------------------------------------------------------------------- /src/css/app.sass: -------------------------------------------------------------------------------- 1 | // app global css in Sass form 2 | .hvr 3 | display: inline-block 4 | vertical-align: middle 5 | -webkit-transform: perspective(1px) translateZ(0) 6 | transform: perspective(1px) translateZ(0) 7 | box-shadow: 0 0 1px rgba(0, 0, 0, 0) 8 | -webkit-transition-duration: 0.3s 9 | transition-duration: 0.3s 10 | -webkit-transition-property: box-shadow, transform 11 | transition-property: box-shadow, transform 12 | .hvr:hover, .hvr:focus, .hvr:active 13 | box-shadow: 0 10px 10px -10px rgba(227, 19, 55, 0.5) 14 | -webkit-transform: scale(1.2) 15 | transform: scale(1.2) rotate(1deg) 16 | a 17 | color: #1d8ce0 18 | &:link 19 | color: #1d8ce0 20 | font-weight: bold 21 | text-decoration: none 22 | &:visited 23 | color: #884488 24 | .wrap 25 | overflow: auto 26 | overflow-wrap: break-word 27 | 28 | img 29 | max-width: 100% 30 | 31 | h1 32 | font-size: 1.35rem 33 | h2 34 | font-size: 1.3rem 35 | h3 36 | font-size: 1.2rem 37 | h4 38 | font-size: 1.1rem 39 | h5 40 | font-size: 1rem 41 | pre 42 | white-space: pre-wrap 43 | white-space: -moz-pre-wrap 44 | white-space: -pre-wrap 45 | white-space: -o-pre-wrap 46 | word-wrap: break-word 47 | word-break: break-all 48 | display: block 49 | color: #ececec 50 | background-color: #1a272d 51 | border: 1px solid #131e23 52 | border-radius: 3px 53 | padding: 20px 54 | 55 | body 56 | text-rendering: optimizeLegibility 57 | font-family: Roboto,Helvetica Neue,Helvetica,Arial,sans-serif 58 | line-height: 1.5 59 | word-wrap: normal 60 | word-break: normal -------------------------------------------------------------------------------- /src/css/app.scss: -------------------------------------------------------------------------------- 1 | // app global css in Sass form 2 | .hvr { 3 | display: inline-block; 4 | vertical-align: middle; 5 | -webkit-transform: perspective(1px) translateZ(0); 6 | transform: perspective(1px) translateZ(0); 7 | box-shadow: 0 0 1px rgba(0, 0, 0, 0); 8 | -webkit-transition-duration: 0.3s; 9 | transition-duration: 0.3s; 10 | -webkit-transition-property: box-shadow, transform; 11 | transition-property: box-shadow, transform; 12 | } 13 | 14 | .hvr:hover, .hvr:focus, .hvr:active { 15 | box-shadow: 0 10px 10px -10px rgba(227, 19, 55, 0.5); 16 | -webkit-transform: scale(1.2); 17 | transform: scale(1.2) rotate(1deg); 18 | } 19 | 20 | a { 21 | color: #1d8ce0; 22 | 23 | &:link { 24 | color: #1d8ce0; 25 | font-weight: bold; 26 | text-decoration: none; 27 | } 28 | 29 | &:visited { 30 | color: #884488; 31 | } 32 | } 33 | 34 | .wrap { 35 | overflow: auto; 36 | overflow-wrap: break-word; 37 | } 38 | 39 | img { 40 | max-width: 100%; 41 | } 42 | 43 | h1 { 44 | font-size: 1.35rem; 45 | } 46 | 47 | h2 { 48 | font-size: 1.3rem; 49 | } 50 | 51 | h3 { 52 | font-size: 1.2rem; 53 | } 54 | 55 | h4 { 56 | font-size: 1.1rem; 57 | } 58 | 59 | h5 { 60 | font-size: 1rem; 61 | } 62 | 63 | pre { 64 | white-space: pre-wrap; 65 | white-space: -moz-pre-wrap; 66 | white-space: -pre-wrap; 67 | white-space: -o-pre-wrap; 68 | word-wrap: break-word; 69 | word-break: break-all; 70 | display: block; 71 | color: #ececec; 72 | background-color: #1a272d; 73 | border: 1px solid #131e23; 74 | border-radius: 3px; 75 | padding: 20px; 76 | } 77 | 78 | body { 79 | text-rendering: optimizeLegibility; 80 | font-family: Roboto, Helvetica Neue, Helvetica, Arial, sans-serif; 81 | line-height: 1.5; 82 | word-wrap: normal; 83 | word-break: normal; 84 | } -------------------------------------------------------------------------------- /src/css/quasar.variables.sass: -------------------------------------------------------------------------------- 1 | // Quasar Sass (& SCSS) Variables 2 | // -------------------------------------------------- 3 | // To customize the look and feel of this app, you can override 4 | // the Sass/SCSS variables found in Quasar's source Sass/SCSS files. 5 | 6 | // Check documentation for full list of Quasar variables 7 | 8 | // Your own variables (that are declared here) and Quasar's own 9 | // ones will be available out of the box in your .vue/.scss/.sass files 10 | 11 | // It's highly recommended to change the default colors 12 | // to match your app's branding. 13 | // Tip: Use the "Theme Builder" on Quasar's documentation website. 14 | 15 | $primary : #3E92CC // #212529 16 | $secondary : #E31337 // #26A69A 17 | $accent : #9C27B0 18 | // $accent : E31337 19 | $dark : #1D1D1D 20 | 21 | $positive : #21BA45 22 | $negative : #C10015 23 | $info : #31CCEC 24 | $warning : #F2C037 25 | -------------------------------------------------------------------------------- /src/index.template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <%= htmlWebpackPlugin.options.productName %> 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | -------------------------------------------------------------------------------- /src/pages/Error404.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 26 | -------------------------------------------------------------------------------- /src/pages/Index.vue: -------------------------------------------------------------------------------- 1 | 15 | 20 | 53 | -------------------------------------------------------------------------------- /src/pages/block.vue: -------------------------------------------------------------------------------- 1 | 6 | 11 | 37 | -------------------------------------------------------------------------------- /src/pages/blocks.vue: -------------------------------------------------------------------------------- 1 | 6 | 11 | 31 | -------------------------------------------------------------------------------- /src/pages/changelly.vue: -------------------------------------------------------------------------------- 1 | 6 | 8 | 36 | -------------------------------------------------------------------------------- /src/pages/communities.vue: -------------------------------------------------------------------------------- 1 | 25 | 69 | -------------------------------------------------------------------------------- /src/pages/connections.vue: -------------------------------------------------------------------------------- 1 | 22 | 59 | -------------------------------------------------------------------------------- /src/pages/exchange.vue: -------------------------------------------------------------------------------- 1 | 6 | 8 | 37 | -------------------------------------------------------------------------------- /src/pages/health.vue: -------------------------------------------------------------------------------- 1 | 23 | 69 | -------------------------------------------------------------------------------- /src/pages/market.vue: -------------------------------------------------------------------------------- 1 | 6 | 16 | -------------------------------------------------------------------------------- /src/pages/markets.vue: -------------------------------------------------------------------------------- 1 | 7 | 57 | -------------------------------------------------------------------------------- /src/pages/nodes.vue: -------------------------------------------------------------------------------- 1 | 8 | 18 | -------------------------------------------------------------------------------- /src/pages/owners.vue: -------------------------------------------------------------------------------- 1 | // owner key history equivalent to https://hiveblocks.com/@username/~owners 2 | 20 | 53 | -------------------------------------------------------------------------------- /src/pages/submit.vue: -------------------------------------------------------------------------------- 1 | 25 | 30 | 33 | 88 | -------------------------------------------------------------------------------- /src/pages/tip.vue: -------------------------------------------------------------------------------- 1 | 15 | 47 | -------------------------------------------------------------------------------- /src/pages/trail.vue: -------------------------------------------------------------------------------- 1 | 6 | 11 | 32 | -------------------------------------------------------------------------------- /src/pages/tribes.vue: -------------------------------------------------------------------------------- 1 | 14 | 82 | -------------------------------------------------------------------------------- /src/pages/witnesses.vue: -------------------------------------------------------------------------------- 1 | 8 | 18 | -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import VueRouter from 'vue-router' 3 | 4 | import routes from './routes' 5 | 6 | Vue.use(VueRouter) 7 | 8 | /* 9 | * If not building with SSR mode, you can 10 | * directly export the Router instantiation; 11 | * 12 | * The function below can be async too; either use 13 | * async/await or return a Promise which resolves 14 | * with the Router instance. 15 | */ 16 | 17 | export default function (/* { store, ssrContext } */) { 18 | const Router = new VueRouter({ 19 | scrollBehavior: () => ({ x: 0, y: 0 }), 20 | routes, 21 | 22 | // Leave these as they are and change in quasar.conf.js instead! 23 | // quasar.conf.js -> build -> vueRouterMode 24 | // quasar.conf.js -> build -> publicPath 25 | mode: process.env.VUE_ROUTER_MODE, 26 | base: process.env.VUE_ROUTER_BASE 27 | }) 28 | 29 | return Router 30 | } 31 | -------------------------------------------------------------------------------- /src/statics/app-logo-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/statics/app-logo-128x128.png -------------------------------------------------------------------------------- /src/statics/badge_powered-by-hive_dark.svg: -------------------------------------------------------------------------------- 1 | Powered By -------------------------------------------------------------------------------- /src/statics/bandcamp.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/bitcoin.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/discord.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/dogecoin.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/ethereum.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/facebook.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/flickr.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/gab.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | gab-logo 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/statics/github.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/hbd.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/hextacular.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/statics/hive-engine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/statics/hive-engine.png -------------------------------------------------------------------------------- /src/statics/hive-keychain.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/hive.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/statics/hivesigner.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | image/svg+xml 7 | 8 | steemconnect 9 | 10 | 11 | 12 | 13 | hivesigner 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/statics/horizontal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/statics/icons/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/statics/icons/apple-icon-120x120.png -------------------------------------------------------------------------------- /src/statics/icons/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/statics/icons/apple-icon-152x152.png -------------------------------------------------------------------------------- /src/statics/icons/apple-icon-167x167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/statics/icons/apple-icon-167x167.png -------------------------------------------------------------------------------- /src/statics/icons/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/statics/icons/apple-icon-180x180.png -------------------------------------------------------------------------------- /src/statics/icons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/statics/icons/favicon-32x32.png -------------------------------------------------------------------------------- /src/statics/icons/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/statics/icons/favicon-96x96.png -------------------------------------------------------------------------------- /src/statics/icons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/statics/icons/favicon.ico -------------------------------------------------------------------------------- /src/statics/icons/icon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/statics/icons/icon-128x128.png -------------------------------------------------------------------------------- /src/statics/icons/icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/statics/icons/icon-192x192.png -------------------------------------------------------------------------------- /src/statics/icons/icon-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/statics/icons/icon-256x256.png -------------------------------------------------------------------------------- /src/statics/icons/icon-384x384.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/statics/icons/icon-384x384.png -------------------------------------------------------------------------------- /src/statics/icons/icon-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/statics/icons/icon-512x512.png -------------------------------------------------------------------------------- /src/statics/icons/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/statics/icons/ms-icon-144x144.png -------------------------------------------------------------------------------- /src/statics/icons/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/instagram.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/ipfs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/statics/keybase.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/lightning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/statics/lightning.png -------------------------------------------------------------------------------- /src/statics/linkedin.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/litecoin.svg: -------------------------------------------------------------------------------- 1 | Litecoin -------------------------------------------------------------------------------- /src/statics/mastodon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/medium.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/member.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/statics/member.png -------------------------------------------------------------------------------- /src/statics/metamask.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/pal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/statics/pal.png -------------------------------------------------------------------------------- /src/statics/pgp.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/piggyBank.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/statics/play.png -------------------------------------------------------------------------------- /src/statics/protonmail.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ausbitbank/hive.ausbit.dev-src/980ade336df3b022b5d2e0633528eba7a85771f5/src/statics/protonmail.svg -------------------------------------------------------------------------------- /src/statics/psn.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/reddit.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: -------------------------------------------------------------------------------- /src/statics/soundcloud.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/spotify.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/steam.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/telegram.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/threespeak.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 10 | 11 | 15 | 16 | 17 | 18 | 26 | 27 | 28 | 31 | 33 | 34 | -------------------------------------------------------------------------------- /src/statics/tiktok.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/statics/tumblr.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/twitch.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/twitter.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/vimeo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/vimm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/statics/wordpress.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/xbox.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/youtube.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/store/hive/actions.js: -------------------------------------------------------------------------------- 1 | import hive from '@hiveio/hive-js' 2 | 3 | export async function getAccount (context, account) { 4 | if (account !== null) { 5 | hive.api.getAccountsAsync([account]) 6 | .then((response) => { 7 | if (response[0] === undefined) { 8 | } else { 9 | context.commit('updateAccountData', response[0]) 10 | } 11 | }) 12 | .catch(() => { console.error('Failed to load profile') }) 13 | } 14 | } 15 | 16 | export async function getAccounts (context, accounts) { 17 | if (accounts.length > 0) { 18 | hive.api.getAccountsAsync(accounts) 19 | .then((response) => { 20 | if (response[0] === undefined) { 21 | } else { 22 | response.forEach(r => { 23 | context.commit('updateAccountData', r) 24 | }) 25 | } 26 | }) 27 | .catch(() => { console.error('Failed to load profile') }) 28 | } 29 | } 30 | 31 | export async function getGlobalProps (context) { 32 | hive.api.getDynamicGlobalPropertiesAsync() 33 | .then((response) => { context.commit('updateGlobalProps', response) }) 34 | .catch(() => { console.error('Failed to load global properties') }) 35 | } 36 | 37 | export async function getCommunityInfo (context, username) { 38 | var params = { observer: context.state.loggedInUser, name: username } 39 | hive.api.callAsync('bridge.get_community', params) 40 | .then(response => { context.commit('updateCommunityInfo', response) }) 41 | .catch(() => { console.error('Failed to get community info') }) 42 | } 43 | 44 | export async function getCommunitySubscriptions (context, username) { 45 | var params = { account: username } 46 | hive.api.callAsync('bridge.list_all_subscriptions', params) 47 | .then(response => { context.commit('updateCommunitySubscriptions', response) }) 48 | .catch(() => { console.error('Failed to get community subscriptions') }) 49 | } 50 | 51 | export async function getAccountFollowing (context, username) { // ToDo 52 | hive.api.getFollowingAsync() 53 | .then(response => { 54 | console.log(response) 55 | context.commit('updateAccountFollowing', response) 56 | }) 57 | .catch(() => { console.error('Failed to get followers of account ' + username) }) 58 | } 59 | 60 | export async function getFollowCount (context, username) { 61 | hive.api.getFollowCountAsync(username) 62 | .then((response) => { context.commit('updateFollowCount', response) }) 63 | .catch(() => { console.error('Failed to load follow count') }) 64 | } 65 | -------------------------------------------------------------------------------- /src/store/hive/getters.js: -------------------------------------------------------------------------------- 1 | export function communityInfo (state, community) { 2 | return state.communityInfo[community] 3 | } 4 | -------------------------------------------------------------------------------- /src/store/hive/index.js: -------------------------------------------------------------------------------- 1 | import state from './state' 2 | import * as getters from './getters' 3 | import * as mutations from './mutations' 4 | import * as actions from './actions' 5 | 6 | export default { 7 | namespaced: true, 8 | state, 9 | getters, 10 | mutations, 11 | actions 12 | } 13 | -------------------------------------------------------------------------------- /src/store/hive/mutations.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import { SessionStorage, LocalStorage } from 'quasar' 3 | export function updateLoggedInUser (state, username) { 4 | state.user.username = username 5 | SessionStorage.set('loggedInUser', username) 6 | } 7 | export function updateLoginType (state, type) { 8 | state.user.loginType = type 9 | SessionStorage.set('loginType', type) 10 | } 11 | export function updateNotifications (state, notifications) { 12 | state.user.notifications = notifications 13 | SessionStorage.set('notifications', notifications) 14 | } 15 | export function updateUnreadNotificationCount (state, count) { 16 | state.user.unreadNotificationCount = count 17 | SessionStorage.set('unreadNotificationCount', count) 18 | } 19 | export function updateAccountData (state, accountData) { 20 | Vue.set(state.accounts, accountData.name, accountData) 21 | } 22 | 23 | export function updateGlobalProps (state, props) { 24 | Vue.set(state, 'globalProps', props) 25 | } 26 | 27 | export function updateCommunityInfo (state, communityInfo) { 28 | Vue.set(state.communityInfo, communityInfo.name, communityInfo) 29 | } 30 | 31 | export function updateCommunitySubscriptions (state, communitySubscriptions) { 32 | Vue.set(state.user, 'communities', communitySubscriptions) 33 | SessionStorage.set('communitySubscriptions', communitySubscriptions) 34 | } 35 | 36 | export function updateSettings (state, settings) { 37 | state.user.settings = settings 38 | LocalStorage.set('settings', settings) 39 | } 40 | 41 | export async function addToQueue (state, newItem) { 42 | state.queue.push(newItem) 43 | } 44 | export async function removeFromQueue (state, itemToRemove) { 45 | state.queue = state.queue.filter(a => a !== itemToRemove) 46 | } 47 | 48 | export async function clearQueue (state) { 49 | state.queue = [] 50 | } 51 | 52 | export async function updateFollowCount (state, followCount) { 53 | var a = followCount.account 54 | delete followCount.account 55 | Vue.set(state.followCounts, a, followCount) 56 | } 57 | -------------------------------------------------------------------------------- /src/store/hive/state.js: -------------------------------------------------------------------------------- 1 | import { SessionStorage, LocalStorage } from 'quasar' 2 | import { v4 as uuidv4 } from 'uuid' 3 | export default function () { 4 | return { 5 | user: { 6 | username: SessionStorage.getItem('loggedInUser') || null, 7 | loginType: SessionStorage.getItem('loginType') || null, 8 | lastUpdateTime: null, 9 | following: [], 10 | followers: [], 11 | communities: SessionStorage.getItem('communitySubscriptions') || [], 12 | state: {}, 13 | notifications: SessionStorage.getItem('notifications') || [], 14 | unreadNotificationCount: 0, 15 | settings: LocalStorage.getItem('settings') || { 16 | darkBackground: true, 17 | voteWeightPost: 100, 18 | voteWeightComment: 100, 19 | beneficiary: [{ account: 'ausbitbank', weight: 1000 }], 20 | apiNode: 'https://api.hive.blog', 21 | ahNode: 'https://api.hive.blog', 22 | heApiNode: 'https://api.hive-engine.com/rpc' 23 | } 24 | }, 25 | queue: [], 26 | accounts: {}, 27 | followCounts: {}, 28 | posts: {}, 29 | communityInfo: {}, 30 | globalProps: { 31 | empty: true 32 | }, 33 | has: { 34 | meta: { 35 | name: 'hive.ausbit.dev', 36 | description: 'A Hive block explorer and toolkit', 37 | icon: 'https://hive.ausbit.dev/statics/hive.svg' 38 | }, 39 | auth: { 40 | username: '', 41 | token: undefined, 42 | expire: undefined, 43 | key: undefined 44 | }, 45 | uid: uuidv4() 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/store/hive/store-flag.d.ts: -------------------------------------------------------------------------------- 1 | // THIS FEATURE-FLAG FILE IS AUTOGENERATED, 2 | // REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING 3 | import "quasar/dist/types/feature-flag"; 4 | 5 | declare module "quasar/dist/types/feature-flag" { 6 | interface QuasarFeatureFlags { 7 | store: true; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | import hive from './hive' 4 | // import example from './module-example' 5 | 6 | Vue.use(Vuex) 7 | 8 | /* 9 | * If not building with SSR mode, you can 10 | * directly export the Store instantiation; 11 | * 12 | * The function below can be async too; either use 13 | * async/await or return a Promise which resolves 14 | * with the Store instance. 15 | */ 16 | 17 | export default function (/* { ssrContext } */) { 18 | const Store = new Vuex.Store({ 19 | modules: { 20 | hive 21 | }, 22 | 23 | // enable strict mode (adds overhead!) 24 | // for dev mode only 25 | strict: process.env.DEV 26 | }) 27 | 28 | return Store 29 | } 30 | -------------------------------------------------------------------------------- /src/store/module-example/actions.js: -------------------------------------------------------------------------------- 1 | export function someAction (/* context */) { 2 | } 3 | -------------------------------------------------------------------------------- /src/store/module-example/getters.js: -------------------------------------------------------------------------------- 1 | export function someGetter (/* state */) { 2 | } 3 | -------------------------------------------------------------------------------- /src/store/module-example/index.js: -------------------------------------------------------------------------------- 1 | import state from './state' 2 | import * as getters from './getters' 3 | import * as mutations from './mutations' 4 | import * as actions from './actions' 5 | 6 | export default { 7 | namespaced: true, 8 | getters, 9 | mutations, 10 | actions, 11 | state 12 | } 13 | -------------------------------------------------------------------------------- /src/store/module-example/mutations.js: -------------------------------------------------------------------------------- 1 | export function someMutation (/* state */) { 2 | } 3 | -------------------------------------------------------------------------------- /src/store/module-example/state.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | return { 3 | // 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/store/store-flag.d.ts: -------------------------------------------------------------------------------- 1 | // THIS FEATURE-FLAG FILE IS AUTOGENERATED, 2 | // REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING 3 | import "quasar/dist/types/feature-flag"; 4 | 5 | declare module "quasar/dist/types/feature-flag" { 6 | interface QuasarFeatureFlags { 7 | store: true; 8 | } 9 | } 10 | --------------------------------------------------------------------------------