diff --git a/.circleci/config.yml b/.circleci/config.yml index edbf7f419401..4183c21bbf13 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -44,7 +44,7 @@ jobs: command: sudo apt-get install zip - run: name: Build Maskbook - command: npm run build-ci + command: npx build-ci - store_artifacts: path: Maskbook.base.zip destination: /Maskbook.base.zip diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fcc6bcdaf30e..09b7be4434c8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,7 +24,7 @@ jobs: ${{ runner.os }}-node- - run: sudo npm i -g pnpm - run: npm run ci - - run: npm run build-ci + - run: npx build-ci - name: Upload `Maskbook.base.zip` uses: actions/upload-artifact@v2 with: diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index cc535dba607d..d0822eacbcac 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -21,18 +21,26 @@ jobs: key: ${{ runner.os }}-node-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-node- - - run: sudo npm i -g pnpm - - run: npm run ci - - run: npx prettier --list-different . + - run: sudo npm install --global pnpm + - run: pnpm ci - run: npx build -- echo "Check tsc" + - run: npx locale-kit - run: npm run lint:typecoverage - - run: npm run locale-kit + working-directory: packages/maskbook - run: npm run lint:report - name: Upload ESLint Report uses: actions/upload-artifact@v2 with: name: eslint path: ./reports/junit + prettier: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + with: + ref: ${{ github.event.pull_request.head.sha }} + - uses: actions/setup-node@v2-beta + - run: npx prettier --list-different . storybook: runs-on: ubuntu-20.04 continue-on-error: false diff --git a/.husky/.gitignore b/.husky/.gitignore index c9cdc63b0701..31354ec13899 100644 --- a/.husky/.gitignore +++ b/.husky/.gitignore @@ -1 +1 @@ -_ \ No newline at end of file +_ diff --git a/.husky/pre-commit b/.husky/pre-commit index 60003c35330d..8c404449e3ae 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -2,4 +2,3 @@ . "$(dirname $0)/_/husky.sh" npx lint-staged -npx locale-kit --sync-keys diff --git a/.vscode/settings.json b/.vscode/settings.json index 5314e6a3b198..b09315befb4a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -23,5 +23,23 @@ "cSpell.words": ["Reificated"], "markdownlint.config": { "no-inline-html": false + }, + "[html]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[json]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[jsonc]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" } } diff --git a/netlify.toml b/netlify.toml index 885bccd61998..22f2a524f310 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,5 +1,5 @@ [build] - command = "npm run netlify-install && cd packages/cli-dev-build && npx gulp buildNetlify" + command = "./scripts/netlify.sh" publish = "packages/netlify" ignore = "git diff --quiet HEAD^ HEAD packages/dashboard packages/storybook-shared packages/theme packages/netlify packages/shared packages/icons" [build.environment] diff --git a/package.json b/package.json index ce9311c1a813..68b294db61aa 100644 --- a/package.json +++ b/package.json @@ -6,30 +6,27 @@ "scripts": { "start": "dev", "start-e2e": "env target=E2E dev", - "ts": "dev -- echo Starting TypeScript compiler...", + "ts": "dev --daemon", "go": "dev --help", "start:storybook": "dev -- start-storybook -p 9009 -s public --quiet", "build": "build", "build-e2e": "env target=E2E build", - "build-ci": "ts-node scripts/ci-build.ts", "build-storybook": "build -- build-storybook -s public --quiet", "build-ios": "run-s build:ios:webpack build:ios:ext:prebuilt", - "build:ios:ext:prebuilt": "ts-node scripts/webextensiom-shim-prebuilt.ts", + "build:ios:ext:prebuilt": "webextensiom-shim-prebuilt", "build:ios:webpack": "build iOS", - "lint": "eslint -c ./packages/.eslintrc.json packages/ --ext .ts,.tsx --fix --cache", - "lint:report": "eslint -c ./packages/.eslintrc.json packages/ --ext .ts,.tsx --format junit -o reports/junit/eslint-results.xml --cache", - "lint:typecoverage": "type-coverage --strict -p packages/maskbook --cache --ignore-catch --ignore-files packages/maskbook/src/plugins/Wallet/contracts/** --ignore-files **/__tests__/** --ignore-files **\\__tests__\\** --detail --at-least 98", - "locale-kit": "locale-kit", + "lint": "eslint -c packages/.eslintrc.json packages --ext .ts,.tsx --fix --cache", + "lint:report": "eslint -c packages/.eslintrc.json packages --ext .ts,.tsx --format junit -o reports/junit/eslint-results.xml --cache", "test": "jest --verbose --watch", "test:ci": "jest --verbose --ci --collectCoverage=true --reporters=default --reporters=jest-junit -w 1 --forceExit", "test:e2e": "jest --verbose --runInBand --config=jest-e2e.config.js", "preinstall": "npx only-allow pnpm", - "ci": "pnpm install --frozen-lockfile --store-dir ~/.pnpm/", - "netlify-install": "test \"$CI\" = true && npx pnpm install -r --store=node_modules/.pnpm-store || echo skiping pnpm install" + "ci": "pnpm install --frozen-lockfile --store-dir ~/.pnpm/" }, "lint-staged": { - "*": "prettier --check", - "*.{ts,tsx,js,jsx}": "eslint --cache --fix" + "*": "prettier --write --ignore-unknown", + "*.{ts,tsx,js,jsx}": "eslint -c packages/.eslintrc.json --cache --fix", + "packages/maskbook/**/*": "locale-kit --sync-keys --remove-unused-keys" }, "dependencies": { "@emotion/cache": "^11", @@ -49,8 +46,7 @@ "devDependencies": { "@commitlint/cli": "^11.0.0", "@commitlint/config-conventional": "^11.0.0", - "@dimensiondev/locale-kit": "workspace:*", - "@dimensiondev/maskbook-cli-dev-or-build": "workspace:*", + "@dimensiondev/cli": "workspace:*", "@magic-works/commonjs-import.meta": "^1.0.0", "@magic-works/i18n-codegen": "^0.0.5", "@material-ui/codemod": "^5.0.0-alpha.24", @@ -70,17 +66,16 @@ "prettier": "^2.1.2", "ts-node": "^9.1.1", "ttypescript": "^1.5.12", - "type-coverage": "^2.14.8", "typescript": "4.1.3" }, + "engines": { + "node": ">=14.4.0", + "pnpm": ">=5" + }, "pnpm": { "overrides": { "react": "=0.0.0-experimental-dc27b5aaa", "react-dom": "=0.0.0-experimental-dc27b5aaa" } - }, - "engines": { - "node": ">=14.4.0", - "pnpm": ">=5" } } diff --git a/packages/README.md b/packages/README.md index d236d02e7a1e..81bf809aab4d 100644 --- a/packages/README.md +++ b/packages/README.md @@ -20,7 +20,7 @@ ## Tools -- [cli-dev-build](cli-dev-build) +- [cli](cli) Because our project is using TypeScript project reference and code generation, to make the build process work normally, those process must run before any other commands. diff --git a/packages/cli-dev-build/build.js b/packages/cli-dev-build/build.js deleted file mode 100755 index 43ba2a68466f..000000000000 --- a/packages/cli-dev-build/build.js +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env node - -const { spawn } = require('child_process') -async function main() { - await require('./ts').build() - if (process.argv[2] === '--') { - spawn(process.argv.slice(3).join(' '), { shell: true, stdio: 'inherit' }) - } else { - require('./main.js')('build') - } -} -main().catch((e) => { - throw e -}) diff --git a/packages/cli-dev-build/dev.js b/packages/cli-dev-build/dev.js deleted file mode 100755 index c7503eb80a51..000000000000 --- a/packages/cli-dev-build/dev.js +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env node - -const { spawn } = require('child_process') -async function main() { - await require('./ts') - .build() - .catch(() => {}) - require('./ts').dev() - if (process.argv[2] === '--') { - spawn(process.argv.slice(3).join(' '), { shell: true, stdio: 'inherit' }) - } else { - require('./main.js')('dev') - } -} -main().catch((e) => { - throw e -}) diff --git a/packages/cli-dev-build/gulpfile.js b/packages/cli-dev-build/gulpfile.js deleted file mode 100644 index 51395a1148e3..000000000000 --- a/packages/cli-dev-build/gulpfile.js +++ /dev/null @@ -1,2 +0,0 @@ -Object.assign(module.exports, require('./netlify')) -Object.assign(module.exports, require('./ts')) diff --git a/packages/cli-dev-build/main.js b/packages/cli-dev-build/main.js deleted file mode 100644 index ec9eb72f6e22..000000000000 --- a/packages/cli-dev-build/main.js +++ /dev/null @@ -1,43 +0,0 @@ -const { spawn } = require('child_process') -const { resolve } = require('path') - -const presets = ['chromium', 'E2E', 'firefox', 'android', 'iOS', 'base'] -const otherFlags = ['beta', 'insider', 'reproducible', 'profile', 'manifest-v3'] -const knownTargets = ['-h', '--help', ...presets, ...otherFlags] -/** @param {'dev' | 'build'} mode */ -async function main(mode) { - let args = process.argv.slice(2) - - if (args.includes('-h') || args.includes('--help')) { - const inquirer = require('inquirer') - const { preset } = await inquirer.prompt({ - type: 'list', - name: 'preset', - message: 'Choose preset', - choices: presets, - }) - const { flags } = await inquirer.prompt({ - type: 'checkbox', - name: 'flags', - choices: otherFlags, - }) - args = [...flags, preset] - const { confirm } = await inquirer.prompt({ - type: 'confirm', - name: 'confirm', - message: `Command is: "npx ${mode === 'dev' ? 'dev' : 'build'} ${args.join(' ')}". Is that OK?`, - }) - if (!confirm) return - } - - const command = ['--mode', mode === 'dev' ? 'development' : 'production'] - if (mode === 'dev') command.unshift('serve') - args.filter((x) => !x.startsWith('-')).forEach((target) => { - command.push('--env', target) - if (!knownTargets.includes(target)) { - throw new TypeError('Unknown target ' + target + '. Known targets: ' + knownTargets.join(',')) - } - }) - spawn('npx', ['webpack', ...command], { stdio: 'inherit', shell: true, cwd: resolve(__dirname, '../maskbook/') }) -} -module.exports = main diff --git a/packages/cli-dev-build/netlify.js b/packages/cli-dev-build/netlify.js deleted file mode 100644 index 37ce7b71403c..000000000000 --- a/packages/cli-dev-build/netlify.js +++ /dev/null @@ -1,45 +0,0 @@ -const { series, parallel } = require('gulp') -const { spawn } = require('child_process') - -const { join, relative } = require('path') -const netlify = join(__dirname, '../netlify') - -const createBuildStorybook6 = (basePath, output, name) => { - const f = () => { - const r = relative(basePath, output) - return spawn(`npx`, ['build-storybook', '-o', r, '-s', r, '--quiet'], { - cwd: basePath, - shell: true, - stdio: 'inherit', - }) - } - f.displayName = name + '-storybook' - f.description = `Build storybook of ${name} to ${output}` - return f -} - -const createBuildSnowpack = (basePath, output, name) => { - const f = () => { - const r = relative(basePath, output) - return spawn(`npx`, ['snowpack', 'build', '--buildOptions.out', r, '--quiet'], { - cwd: basePath, - shell: true, - stdio: 'inherit', - }) - } - f.displayName = name + '-snowpack' - f.description = `Build snowpack of ${name} to ${output}` - return f -} - -const { build } = require('./ts') -const iconsSnowpack = createBuildSnowpack(join(__dirname, '../icons'), join(netlify, 'snowpack/icons'), 'icons') -const dashboard = createBuildSnowpack(join(__dirname, '../dashboard'), join(netlify, 'snowpack/dashboard'), 'dashboard') -const dashboardSB = createBuildStorybook6( - join(__dirname, '../dashboard'), - join(netlify, 'storybook-static/dashboard'), - 'dashboard-snowpack', -) -const themeSB = createBuildStorybook6(join(__dirname, '../theme'), join(netlify, 'storybook-static/theme'), 'theme') - -exports.buildNetlify = parallel(iconsSnowpack, series(build, parallel(dashboardSB, themeSB, dashboard))) diff --git a/packages/cli-dev-build/package.json b/packages/cli-dev-build/package.json deleted file mode 100644 index 097081d4dc67..000000000000 --- a/packages/cli-dev-build/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "@dimensiondev/maskbook-cli-dev-or-build", - "private": true, - "bin": { - "build": "./build.js", - "dev": "./dev.js" - }, - "dependencies": { - "inquirer": "^7.3.3", - "proper-lockfile": "^4.1.1" - }, - "devDependencies": { - "gulp": "^4.0.2" - } -} diff --git a/packages/cli-dev-build/process-lock.js b/packages/cli-dev-build/process-lock.js deleted file mode 100644 index 6c66cebbee67..000000000000 --- a/packages/cli-dev-build/process-lock.js +++ /dev/null @@ -1,25 +0,0 @@ -const properLock = require('proper-lockfile') -const path = require('path') -const lockfilePath = path.join(__dirname, './lockfile.log') - -function delay(ms) { - return new Promise((r) => setTimeout(r, ms)) -} -module.exports = async function* () { - while (true) { - if (!(await properLock.check(__filename, { lockfilePath }))) yield lock - await delay(2000) - } - - /** @returns {Promise} */ - function lock() { - return new Promise((resolve) => { - properLock - .lock(__filename, { - onCompromised: () => resolve(false), - lockfilePath, - }) - .then(() => resolve(true)) - }) - } -} diff --git a/packages/cli-dev-build/ts.js b/packages/cli-dev-build/ts.js deleted file mode 100644 index e69b49593ed3..000000000000 --- a/packages/cli-dev-build/ts.js +++ /dev/null @@ -1,30 +0,0 @@ -// start a one-time "tsc -b" or parallel "tsc -b -w" - -const { spawn } = require('child_process') -const { join, resolve } = require('path') -const Lock = require('./process-lock') -const { runCli } = require('@magic-works/i18n-codegen') - -const configFile = resolve(__dirname, '../../.i18n-codegen.json') -const args = { stdio: 'inherit', shell: true, cwd: join(__dirname, '../..') } - -module.exports.dev = async function dev() { - lock: for await (const lock of Lock()) { - if (await lock()) break lock - } - runCli({ config: configFile, watch: true }) - spawn('npx', ['tsc', '-b', '-w'], args) -} -module.exports.dev.displayName = 'ts' -module.exports.dev.description = 'Start to watch TypeScript project reference' - -module.exports.build = () => { - return new Promise((resolve, reject) => { - runCli({ config: configFile }) - const p = spawn('npx', ['tsc', '-b'], args) - p.on('close', resolve) - p.on('error', reject) - }) -} -module.exports.build.displayName = 'build-ts' -module.exports.build.description = 'Build TypeScript project reference' diff --git a/packages/cli/.gitignore b/packages/cli/.gitignore new file mode 100644 index 000000000000..36f6455180d4 --- /dev/null +++ b/packages/cli/.gitignore @@ -0,0 +1 @@ +!/build diff --git a/packages/cli-dev-build/README.md b/packages/cli/README.md similarity index 99% rename from packages/cli-dev-build/README.md rename to packages/cli/README.md index c81c86525299..94290590bdd2 100644 --- a/packages/cli-dev-build/README.md +++ b/packages/cli/README.md @@ -1,4 +1,4 @@ -# cli-dev-build +# cli This package provides two commands: `build` and `dev`. diff --git a/scripts/ci-build.ts b/packages/cli/build/build-ci.ts old mode 100644 new mode 100755 similarity index 92% rename from scripts/ci-build.ts rename to packages/cli/build/build-ci.ts index 39ddc681e4df..7e070b3026ef --- a/scripts/ci-build.ts +++ b/packages/cli/build/build-ci.ts @@ -1,5 +1,6 @@ +#!/usr/bin/env ts-node import git from '@nice-labs/git-rev' -import { BUILD_PATH, run } from './utils' +import { BUILD_PATH, run } from '../utils' const branch = git.branchName() const types = { diff --git a/packages/cli/build/build.ts b/packages/cli/build/build.ts new file mode 100755 index 000000000000..353f50befadf --- /dev/null +++ b/packages/cli/build/build.ts @@ -0,0 +1,21 @@ +#!/usr/bin/env ts-node +import { spawn } from 'child_process' +import { awaitChildProcess, ROOT_PATH } from '../utils' +import onMain from './main' +import { build } from './typescript' + +async function main() { + await build() + if (process.argv[2] === '--') { + return spawn(process.argv[3], process.argv.slice(4), { + cwd: ROOT_PATH, + stdio: 'inherit', + shell: true, + }) + } + return onMain('build') +} + +main().then(async (child) => { + process.exit(await awaitChildProcess(child)) +}) diff --git a/packages/cli/build/dev.ts b/packages/cli/build/dev.ts new file mode 100755 index 000000000000..e993cd6cdfc5 --- /dev/null +++ b/packages/cli/build/dev.ts @@ -0,0 +1,28 @@ +#!/usr/bin/env ts-node +import { spawn } from 'child_process' +import { awaitChildProcess, ROOT_PATH } from '../utils' +import onMain from './main' +import { build, dev } from './typescript' +import { noop } from 'lodash' + +async function main() { + await build() + dev() + if (process.argv[2] === '--daemon') { + console.log('Starting TypeScript compiler...') + // Never ends + return new Promise(noop) + } + if (process.argv[2] === '--') { + return spawn(process.argv[3], process.argv.slice(4), { + cwd: ROOT_PATH, + stdio: 'inherit', + shell: true, + }) + } + return onMain('dev') +} + +main().then(async (child) => { + process.exit(await awaitChildProcess(child)) +}) diff --git a/packages/cli/build/gulpfile.ts b/packages/cli/build/gulpfile.ts new file mode 100644 index 000000000000..7fc3b8018ebb --- /dev/null +++ b/packages/cli/build/gulpfile.ts @@ -0,0 +1,2 @@ +export * from './netlify' +export * from './typescript' diff --git a/packages/cli/build/main.ts b/packages/cli/build/main.ts new file mode 100644 index 000000000000..2dca9c88a3e4 --- /dev/null +++ b/packages/cli/build/main.ts @@ -0,0 +1,59 @@ +import { spawn } from 'child_process' +import { resolve } from 'path' +import { PKG_PATH } from '../utils' +import { compact } from 'lodash' + +const presets = ['chromium', 'E2E', 'firefox', 'android', 'iOS', 'base'] +const otherFlags = ['beta', 'insider', 'reproducible', 'profile', 'manifest-v3'] +const knownTargets = ['-h', '--help', ...presets, ...otherFlags] + +async function main(mode: 'dev' | 'build') { + let targets = process.argv.slice(2) + + if (targets.includes('-h') || targets.includes('--help')) { + const inquirer = require('inquirer') + const { preset } = await inquirer.prompt({ + type: 'list', + name: 'preset', + message: 'Choose preset', + choices: presets, + }) + const { flags } = await inquirer.prompt({ + type: 'checkbox', + name: 'flags', + choices: otherFlags, + }) + targets = [...flags, preset] + + const command = ['npx', mode === 'dev' ? 'dev' : 'build', ...targets] + const { confirm } = await inquirer.prompt({ + type: 'confirm', + name: 'confirm', + message: `Command is: "${command.join(' ')}". Is that OK?`, + }) + if (!confirm) return process.exit(0) + } + + // prettier-ignore + const command = [ + 'webpack', + mode === 'dev' ? 'serve' : undefined, + '--mode', + mode === 'dev' ? 'development' : 'production', + ] + for (const target of targets) { + if (target.startsWith('-')) { + continue + } else if (!knownTargets.includes(target)) { + throw new TypeError(`Unknown target ${target}. Known targets: ${knownTargets}`) + } + command.push('--env', target) + } + return spawn('npx', compact(command), { + cwd: resolve(PKG_PATH, 'maskbook'), + stdio: 'inherit', + shell: true, + }) +} + +export default main diff --git a/packages/cli/build/netlify.ts b/packages/cli/build/netlify.ts new file mode 100644 index 000000000000..2a959291f07c --- /dev/null +++ b/packages/cli/build/netlify.ts @@ -0,0 +1,63 @@ +import { spawn } from 'child_process' +import { parallel, series } from 'gulp' +import { relative, resolve } from 'path' +import { build } from './typescript' +import { NETLIFY_PATH, PKG_PATH } from '../utils' + +const createBuildStorybook6 = (basePath: string, output: string, name: string) => { + const fn = () => { + const r = relative(basePath, output) + return spawn('npx', ['build-storybook', '-o', r, '-s', r, '--quiet'], { + cwd: basePath, + shell: true, + stdio: 'inherit', + }) + } + fn.displayName = `${name}-storybook` + fn.description = `Build storybook of ${name} to ${output}` + return fn +} + +const createBuildSnowpack = (basePath: string, output: string, name: string) => { + const fn = () => { + const r = relative(basePath, output) + return spawn('npx', ['snowpack', 'build', '--buildOptions.out', r, '--quiet'], { + cwd: basePath, + shell: true, + stdio: 'inherit', + }) + } + fn.displayName = `${name}-snowpack` + fn.description = `Build snowpack of ${name} to ${output}` + return fn +} + +const SNOWPACK_PATH = relative(NETLIFY_PATH, 'snowpack') +const STATIC_PATH = resolve(NETLIFY_PATH, 'storybook-static') + +// prettier-ignore +const iconsSnowpack = createBuildSnowpack( + resolve(PKG_PATH, 'icons'), + resolve(SNOWPACK_PATH, 'icons'), + 'icons', +) +// prettier-ignore +const dashboard = createBuildSnowpack( + resolve(PKG_PATH, 'dashboard'), + resolve(SNOWPACK_PATH, 'dashboard'), + 'dashboard', +) +// prettier-ignore +const dashboardSB = createBuildStorybook6( + resolve(PKG_PATH, 'dashboard'), + resolve(STATIC_PATH, 'dashboard'), + 'dashboard-snowpack', +) +// prettier-ignore +const themeSB = createBuildStorybook6( + resolve(PKG_PATH, 'theme'), + resolve(STATIC_PATH, 'theme'), + 'theme', +) + +export const buildNetlify = parallel(iconsSnowpack, series(build, parallel(dashboardSB, themeSB, dashboard))) diff --git a/packages/cli/build/process-lock.ts b/packages/cli/build/process-lock.ts new file mode 100644 index 000000000000..ada75900938d --- /dev/null +++ b/packages/cli/build/process-lock.ts @@ -0,0 +1,24 @@ +import path from 'path' +import Lock from 'proper-lockfile' +import { delay } from '../utils' + +const lockfilePath = path.join(__dirname, 'lockfile.log') + +export default async function* () { + while (true) { + if (!(await Lock.check(__filename, { lockfilePath }))) { + yield locker + } + await delay(2000) + } +} + +function locker() { + return new Promise(async (resolve) => { + await Lock.lock(__filename, { + lockfilePath, + onCompromised: () => resolve(false), + }) + resolve(true) + }) +} diff --git a/packages/cli/build/typescript.ts b/packages/cli/build/typescript.ts new file mode 100644 index 000000000000..4753699405b1 --- /dev/null +++ b/packages/cli/build/typescript.ts @@ -0,0 +1,34 @@ +import { runCli } from '@magic-works/i18n-codegen' +import { spawn, SpawnOptions } from 'child_process' +import { resolve } from 'path' +import { ROOT_PATH } from '../utils' +import makeLockSequence from './process-lock' + +const config = resolve(ROOT_PATH, '.i18n-codegen.json') +const options: SpawnOptions = { + cwd: ROOT_PATH, + stdio: 'inherit', + shell: true, +} + +export async function dev() { + lock: for await (const lock of makeLockSequence()) { + if (await lock()) break lock + } + runCli({ config, watch: true }, console.error) + // start a one-time "tsc -b" or parallel "tsc -b -w" + return spawn('npx', ['tsc', '-b', '-w'], options) +} +dev.displayName = 'ts' +dev.description = 'Start to watch TypeScript project reference' + +export const build = () => { + return new Promise((resolve, reject) => { + runCli({ config }, console.error) + const process = spawn('npx', ['tsc', '-b'], options) + process.on('close', resolve) + process.on('error', reject) + }) +} +build.displayName = 'build-ts' +build.description = 'Build TypeScript project reference' diff --git a/scripts/webextensiom-shim-prebuilt.ts b/packages/cli/build/webextensiom-shim-prebuilt.ts old mode 100644 new mode 100755 similarity index 90% rename from scripts/webextensiom-shim-prebuilt.ts rename to packages/cli/build/webextensiom-shim-prebuilt.ts index e03a43ff1c43..2e81d6602361 --- a/scripts/webextensiom-shim-prebuilt.ts +++ b/packages/cli/build/webextensiom-shim-prebuilt.ts @@ -1,6 +1,7 @@ +#!/usr/bin/env ts-node import fs from 'fs' import path from 'path' -import { BUILD_PATH, run } from './utils' +import { BUILD_PATH, run } from '../utils' const BUILD_JS_PATH = path.join(BUILD_PATH, 'js') diff --git a/packages/locale-kit/ast.ts b/packages/cli/locale-kit/ast.ts similarity index 100% rename from packages/locale-kit/ast.ts rename to packages/cli/locale-kit/ast.ts diff --git a/packages/locale-kit/locale-kit.ts b/packages/cli/locale-kit/locale-kit.ts old mode 100644 new mode 100755 similarity index 81% rename from packages/locale-kit/locale-kit.ts rename to packages/cli/locale-kit/locale-kit.ts index 7929a01c9f82..7992e63c4b1a --- a/packages/locale-kit/locale-kit.ts +++ b/packages/cli/locale-kit/locale-kit.ts @@ -1,13 +1,12 @@ +#!/usr/bin/env ts-node /* eslint-disable no-restricted-imports */ import { difference, isEmpty, isNil, keys, omit, pick, toPairs, without } from 'lodash' -import { run } from '../../scripts/utils' import { findAllUnusedKeys, findAllUsedKeys, getLocaleRelativePath, getMessagePath, LOCALE_NAMES, - LOCALE_PATH, readMessages, writeMessages, } from './utils' @@ -60,11 +59,10 @@ async function syncKeys(locales = without(LOCALE_NAMES, 'en')) { async function diagnosis() { const unusedKeys = await findAllUnusedKeys() if (unusedKeys.length) { + const message = 'Run `npx locale-kit --remove-unused-keys` to solve this problem' for (const locale of LOCALE_NAMES) { const filePath = getLocaleRelativePath(getMessagePath(locale)) - console.log( - `::warning file=${filePath}::Run \`npm run locale-kit -- --remove-unused-keys\` to solve this problem`, - ) + console.log(`::warning file=${filePath}::${message}`) const messages = keys(await readMessages(locale)) for (const key of unusedKeys) { const index = messages.indexOf(key) @@ -76,9 +74,10 @@ async function diagnosis() { } const unsyncedLocales = await findAllUnsyncedLocales() if (!isEmpty(unsyncedLocales)) { + const message = 'Run `npx locale-kit --sync-keys` to solve this problem' for (const [locale, names] of toPairs(unsyncedLocales)) { const filePath = getLocaleRelativePath(getMessagePath(locale)) - console.log(`::warning file=${filePath}::Run \`npm run locale-kit -- --sync-keys\` to solve this problem`) + console.log(`::warning file=${filePath}::${message}`) for (const name of names) { console.log(`::warning file=${filePath}::The ${JSON.stringify(name)} is unsynced`) } @@ -87,15 +86,8 @@ async function diagnosis() { } async function main() { - const unusedKeys = await findAllUnusedKeys() - console.error( - 'Scanned', - unusedKeys.length, - 'unused keys, run `npm run locale-kit -- --remove-unused-keys` to remove them.', - ) - console.error('Unsynced', keys(await findAllUnsyncedLocales()), 'locales') if (process.argv.includes('--remove-unused-keys')) { - await removeAllUnusedKeys(unusedKeys) + await removeAllUnusedKeys(await findAllUnusedKeys()) console.log('Unused keys removed') } if (process.argv.includes('--set-missing-keys')) { @@ -111,7 +103,5 @@ async function main() { if (process.env.CI) { diagnosis() } else { - main().then(() => { - run(LOCALE_PATH, 'git', 'add', '.') - }) + main() } diff --git a/packages/locale-kit/utils.ts b/packages/cli/locale-kit/utils.ts similarity index 82% rename from packages/locale-kit/utils.ts rename to packages/cli/locale-kit/utils.ts index 5c1702f4b3bc..2e6279370143 100644 --- a/packages/locale-kit/utils.ts +++ b/packages/cli/locale-kit/utils.ts @@ -1,19 +1,20 @@ /* eslint-disable no-restricted-imports */ import { promises as fs, readdirSync } from 'fs' import { difference, keys, uniq, without } from 'lodash' -import * as path from 'path' +import { resolve, relative } from 'path' import { getUsedKeys } from './ast' +import { ROOT_PATH, PKG_PATH } from '../utils' -const SOURCE_PATH = path.join(__dirname, '..', 'maskbook', 'src') -export const LOCALE_PATH = path.join(SOURCE_PATH, '_locales') +const SOURCE_PATH = resolve(PKG_PATH, 'maskbook', 'src') +export const LOCALE_PATH = resolve(SOURCE_PATH, '_locales') export const LOCALE_NAMES = readdirSync(LOCALE_PATH) export function getMessagePath(name: string) { - return path.join(LOCALE_PATH, name, 'messages.json') + return resolve(LOCALE_PATH, name, 'messages.json') } export function getLocaleRelativePath(...paths: string[]) { - return path.relative(path.join(__dirname, '..', '..'), path.join(LOCALE_PATH, ...paths)) + return relative(ROOT_PATH, resolve(LOCALE_PATH, ...paths)) } export async function readMessages(name: string) { @@ -51,7 +52,7 @@ export async function findAllUnsyncedLocales(locales = without(LOCALE_NAMES, 'en async function* walk(dir: string): AsyncIterableIterator { for await (const dirent of await fs.opendir(dir)) { - const entry = path.join(dir, dirent.name) + const entry = resolve(dir, dirent.name) if (dirent.isDirectory()) { yield* walk(entry) } else if (dirent.isFile() && /\.(tsx?)$/.test(entry)) { diff --git a/packages/cli/package.json b/packages/cli/package.json new file mode 100644 index 000000000000..af932ad70d9c --- /dev/null +++ b/packages/cli/package.json @@ -0,0 +1,24 @@ +{ + "name": "@dimensiondev/cli", + "private": true, + "bin": { + "build": "./build/build.ts", + "build-ci": "./build/build-ci.ts", + "dev": "./build/dev.ts", + "locale-kit": "./locale-kit/locale-kit.ts", + "webextensiom-shim-prebuilt": "./build/webextensiom-shim-prebuilt.ts" + }, + "dependencies": { + "inquirer": "^7.3.3", + "lodash": "^4.17.21", + "proper-lockfile": "^4.1.1" + }, + "devDependencies": { + "@types/gulp": "^4.0.8", + "@types/inquirer": "^7.3.1", + "@types/lodash": "^4.14.168", + "@types/proper-lockfile": "^4.1.1", + "gulp": "^4.0.2", + "ts-node": "^9.1.1" + } +} diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json new file mode 100644 index 000000000000..91e8238c324f --- /dev/null +++ b/packages/cli/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "ts-node": { + "compilerOptions": { + "target": "ES2018", + "module": "CommonJS" + } + } +} diff --git a/packages/cli/utils.ts b/packages/cli/utils.ts new file mode 100644 index 000000000000..a274461d9d28 --- /dev/null +++ b/packages/cli/utils.ts @@ -0,0 +1,26 @@ +import { ChildProcess, spawnSync } from 'child_process' +import os from 'os' +import { relative, resolve } from 'path' + +export const ROOT_PATH = resolve(__dirname, '..', '..') +export const PKG_PATH = resolve(ROOT_PATH, 'packages') +export const BUILD_PATH = resolve(ROOT_PATH, 'build') +export const NETLIFY_PATH = resolve(PKG_PATH, 'netlify') + +export function run(cwd = ROOT_PATH, cmd: string, ...args: string[]) { + console.log('$', cmd, args.join(' '), '# cwd:', relative(ROOT_PATH, cwd)) + return spawnSync(cmd, args, { + cwd, + stdio: 'inherit', + shell: os.platform() === 'win32', + }) +} + +export const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)) + +export const awaitChildProcess = (child: ChildProcess) => { + return new Promise((resolve) => { + child.on('error', () => resolve(child.exitCode)) + child.on('exit', (code) => resolve(code)) + }) +} diff --git a/packages/contracts/CHANGELOG.md b/packages/contracts/CHANGELOG.md new file mode 100644 index 000000000000..afe987f456bb --- /dev/null +++ b/packages/contracts/CHANGELOG.md @@ -0,0 +1,45 @@ +# Changelog + +## AirDrop + +> Feb-26-2021 + +```plain +commit 9ad87a1 +Mainnet 0x7adcfcafb69aae283f4268e59209ba64a5db4d91 +Ropsten 0xf1276B659FF28EDf92accFb013B1E6c9F782bFfF +Rinkeby 0x2189D088927bfc1563d0b3E447F6472402FED6DD +``` + +## ITO + +> Jan-16-2021 + +```plain +commit 668d573 +Mainnet 0x7aEa34bE68171c6898164f3986Db03964CCa49B7 +Ropsten 0xDF0e910DcC73bdC8f4c332A4C12545928683221f +Rinkeby 0x7751b8c715d1Df74D181C86aE01801330211f370 +``` + +## MaskITO + +> Feb-21-2021 + +```plain +commit 3ea218f +Mainnet 0x86812da3A623ab9606976078588b80C315E55FA3 +Ropsten 0x677f7BbA13108649ECFF068E8B3d55631327B83a +Rinkeby 0x0aC41A27bA9F132D5687CAC986f5302Da6f5F9f6 +``` + +## HappyRedPacket + +> Jan-21-2020 + +```plain +commit cf787df +Mainnet 0x26760783c12181efa3c435aee4ae686c53bdddbb +Ropsten 0x6d84e4863c0530bc0bb4291ef0ff454a40660ca3 +Rinkeby 0x575f906db24154977c7361c2319e2b25e897e3b6 +``` diff --git a/packages/contracts/README.md b/packages/contracts/README.md index 9c319243620a..50b3327428b0 100644 --- a/packages/contracts/README.md +++ b/packages/contracts/README.md @@ -31,3 +31,7 @@ $ git add . # cwd: packages/contracts/types $ # or compile a specific contract $ npm start -- --abi ITO ``` + +## About CHANGELOG.md + +The date is the date of creating contract on the mainnet, commit is the commit of relative smart contract repo which generate the abi. diff --git a/packages/contracts/abis/ITO.json b/packages/contracts/abis/ITO.json index 2f4cc87d804b..d1570ac04aba 100644 --- a/packages/contracts/abis/ITO.json +++ b/packages/contracts/abis/ITO.json @@ -4,31 +4,6 @@ "stateMutability": "nonpayable", "type": "constructor" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "claimer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "to_value", - "type": "uint256" - } - ], - "name": "ClaimSuccess", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -221,32 +196,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "check_claimable", - "outputs": [ - { - "internalType": "uint256", - "name": "claimable_amount", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "claim", - "outputs": [ - { - "internalType": "uint256", - "name": "claimed_amount", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [], "name": "contract_creator", @@ -336,97 +285,6 @@ "stateMutability": "payable", "type": "function" }, - { - "inputs": [], - "name": "getUnlockTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "get_ito_list", - "outputs": [ - { - "internalType": "bytes32[]", - "name": "", - "type": "bytes32[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "mask_address", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "future_admin", - "type": "address" - } - ], - "name": "setAdmin", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_unlock_time", - "type": "uint256" - } - ], - "name": "setUnlockTime", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "bb", - "type": "address" - } - ], - "name": "set_bb_address", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "mask", - "type": "address" - } - ], - "name": "set_mask_address", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -440,9 +298,9 @@ "type": "bytes32" }, { - "internalType": "bytes32", - "name": "verification2", - "type": "bytes32" + "internalType": "address", + "name": "_recipient", + "type": "address" }, { "internalType": "bytes32", @@ -488,31 +346,5 @@ "outputs": [], "stateMutability": "nonpayable", "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "addrs", - "type": "address[]" - } - ], - "name": "withdrawBatchCreator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - } - ], - "name": "withdrawCreator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" } ] diff --git a/packages/contracts/types/ITO.d.ts b/packages/contracts/types/ITO.d.ts index fa2f719d97c2..ece4a8e532a9 100644 --- a/packages/contracts/types/ITO.d.ts +++ b/packages/contracts/types/ITO.d.ts @@ -1,5 +1,6 @@ -/* Generated by ts-generator ver. 0.0.8 */ +/* Autogenerated file. Do not edit manually. */ /* tslint:disable */ +/* eslint-disable */ import BN from 'bn.js' import { Contract, ContractOptions } from 'web3-eth-contract' @@ -34,10 +35,6 @@ export class ITO extends Contract { 5: string[] }> - check_claimable(): TransactionObject - - claim(): TransactionObject - contract_creator(): TransactionObject destruct(id: string | number[]): TransactionObject @@ -56,44 +53,18 @@ export class ITO extends Contract { _qualification: string, ): TransactionObject - getUnlockTime(): TransactionObject - - get_ito_list(): TransactionObject - - mask_address(): TransactionObject - - setAdmin(future_admin: string): TransactionObject - - setUnlockTime(_unlock_time: number | string): TransactionObject - - set_bb_address(bb: string): TransactionObject - - set_mask_address(mask: string): TransactionObject - swap( id: string | number[], verification: string | number[], - verification2: string | number[], + _recipient: string, validation: string | number[], exchange_addr_i: number | string, input_total: number | string, ): TransactionObject withdraw(id: string | number[], addr_i: number | string): TransactionObject - - withdrawBatchCreator(addrs: string[]): TransactionObject - - withdrawCreator(addr: string): TransactionObject } events: { - ClaimSuccess: ContractEvent<{ - claimer: string - timestamp: string - to_value: string - 0: string - 1: string - 2: string - }> DestructSuccess: ContractEvent<{ id: string token_address: string diff --git a/packages/dashboard/src/components/Balance/index.tsx b/packages/dashboard/src/components/Balance/index.tsx new file mode 100644 index 000000000000..3adfe9f4c7c4 --- /dev/null +++ b/packages/dashboard/src/components/Balance/index.tsx @@ -0,0 +1,108 @@ +import { memo } from 'react' +import { experimentalStyled as styled, Typography, Box, Button, buttonClasses } from '@material-ui/core' +import { useDashboardI18N } from '../../locales' +import { MaskColorVar } from '@dimensiondev/maskbook-theme' +import { MaskWalletIcon, SendIcon, CardIcon, SwapIcon, DownloadIcon } from '@dimensiondev/icons' + +export interface BalanceCardProps { + balance: number + onSend(): void + onBuy(): void + onSwap(): void + onReceive(): void +} + +const BalanceContainer = styled('div')( + ({ theme }) => ` + display: flex; + justify-content: space-between; + border-radius: 16px; + align-items: center; + padding: ${theme.spacing(2.5)}; + background: ${MaskColorVar.primaryBackground}; +`, +) + +const IconContainer = styled('div')` + // TODO: mobile + font-size: 48px; + display: flex; + justify-content: center; + align-items: center; + background: ${MaskColorVar.infoBackground}; + border-radius: 50%; +` + +const BalanceDisplayContainer = styled('div')( + ({ theme }) => ` + display: flex; + flex-direction: column; + justify-content: space-between; + margin-left: ${theme.spacing(1)}; +`, +) + +const BalanceTitle = styled(Typography)( + ({ theme }) => ` + font-size: ${theme.typography.subtitle2.fontSize}; + color: ${MaskColorVar.iconLight}; +`, +) + +const BalanceContent = styled(Typography)( + ({ theme }) => ` + font-size: ${theme.typography.h6.fontSize}; + color: ${MaskColorVar.textPrimary}; + line-height: ${theme.typography.h2.lineHeight}; +`, +) + +const ButtonGroup = styled('div')` + display: inline-grid; + gap: 10px; + grid-template-columns: repeat(4, 1fr); + & > * { + font-size: 12px; + & .${buttonClasses.endIcon} > *:nth-of-type(1) { + font-size: 16px; + fill: none; + } + } +` + +export const Balance = memo(({ balance, onSend, onBuy, onSwap, onReceive }: BalanceCardProps) => { + const t = useDashboardI18N() + + return ( + + + + + + + {t.wallets_balance()} + + {balance.toLocaleString('en', { + style: 'currency', + currency: 'USD', + })} + + + + + + + + + + + ) +}) diff --git a/packages/dashboard/src/locales/en.json b/packages/dashboard/src/locales/en.json index 6920c84334b1..0ca70124dec8 100644 --- a/packages/dashboard/src/locales/en.json +++ b/packages/dashboard/src/locales/en.json @@ -35,5 +35,10 @@ "wallets_create_wallet_tabs": "Create Wallet Tabs", "wallets_create_wallet_refresh": "Refresh", "wallets_create_wallet_remember_later": "Remember that later", - "wallets_create_wallet_verification": "Verification" + "wallets_create_wallet_verification": "Verification", + "wallets_balance": "balance", + "wallets_balance_Send": "Send", + "wallets_balance_Buy": "Buy", + "wallets_balance_Swap": "Swap", + "wallets_balance_Receive": "Receive" } diff --git a/packages/dashboard/src/locales/zh.json b/packages/dashboard/src/locales/zh.json index 9bf4d0f86c10..a3224fafd2ee 100644 --- a/packages/dashboard/src/locales/zh.json +++ b/packages/dashboard/src/locales/zh.json @@ -35,5 +35,10 @@ "wallets_create_wallet_tabs": "創建錢包標籤", "wallets_create_wallet_refresh": "刷新", "wallets_create_wallet_remember_later": "記得以後", - "wallets_create_wallet_verification": "确认" + "wallets_balance": "結餘", + "wallets_create_wallet_verification": "确认", + "wallets_balance_Send": "發送", + "wallets_balance_Buy": "購買", + "wallets_balance_Swap": "交換", + "wallets_balance_Receive": "接收" } diff --git a/packages/dashboard/stories/Balance.tsx b/packages/dashboard/stories/Balance.tsx new file mode 100644 index 000000000000..ff28c0597bf6 --- /dev/null +++ b/packages/dashboard/stories/Balance.tsx @@ -0,0 +1,16 @@ +import { story } from '@dimensiondev/maskbook-storybook-shared' +import { Balance as C } from '../src/components/Balance' +import { action } from '@storybook/addon-actions' +const { meta, of } = story(C) + +export default meta({ title: '/Components/Balance' }) + +export const Balance = of({ + args: { + balance: 9000000, + onBuy: action('onBuy'), + onSend: action('onSend'), + onSwap: action('onSwap'), + onReceive: action('onReceive'), + }, +}) diff --git a/packages/locale-kit/index.js b/packages/locale-kit/index.js deleted file mode 100755 index 271526b6bbbe..000000000000 --- a/packages/locale-kit/index.js +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node -require('ts-node').register() -require('./locale-kit.ts') diff --git a/packages/locale-kit/package.json b/packages/locale-kit/package.json deleted file mode 100644 index f2f7fee33372..000000000000 --- a/packages/locale-kit/package.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "@dimensiondev/locale-kit", - "private": true, - "bin": { - "locale-kit": "./index.js" - }, - "devDependencies": { - "lodash": "^4.17.21" - } -} diff --git a/packages/locale-kit/tsconfig.json b/packages/locale-kit/tsconfig.json deleted file mode 100644 index 4082f16a5d91..000000000000 --- a/packages/locale-kit/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../../tsconfig.json" -} diff --git a/packages/maskbook/package.json b/packages/maskbook/package.json index 29e015397dbe..c463009952d1 100644 --- a/packages/maskbook/package.json +++ b/packages/maskbook/package.json @@ -2,7 +2,9 @@ "name": "@dimensiondev/maskbook", "private": true, "license": "AGPL-3.0-or-later", - "scripts": {}, + "scripts": { + "lint:typecoverage": "type-coverage" + }, "dependencies": { "@balancer-labs/sor": "^1.0.0", "@dimensiondev/common-protocols": "1.6.0-20201027083702-d0ae6e2", @@ -160,6 +162,7 @@ "storybook-addon-i18n": "^5.1.13", "ts-jest": "26.5.0", "ts-loader": "^8.0.13", + "type-coverage": "^2.17.0", "web-ext": "^5.4.1", "webpack": "^5.19.0", "webpack-bundle-analyzer": "^4.3.0", @@ -171,5 +174,17 @@ }, "peerDependencies": { "jss": "*" + }, + "typeCoverage": { + "cache": true, + "strict": true, + "detail": true, + "atLeast": 98, + "ignoreCatch": true, + "ignoreFiles": [ + "**/__tests__/**", + "**\\__tests__\\**" + ], + "showRelativePath": true } } diff --git a/packages/maskbook/src/_locales/en/messages.json b/packages/maskbook/src/_locales/en/messages.json index 7b345374a1cc..3a8e1cf89754 100644 --- a/packages/maskbook/src/_locales/en/messages.json +++ b/packages/maskbook/src/_locales/en/messages.json @@ -47,6 +47,7 @@ "dashboard": "Dashboard", "dashboard_tab_token": "Token", "dashboard_tab_collectibles": "Collectibles", + "dashboard_tab_transactions": "Transactions", "dashboard_backup_database_confirmation": "Ok, Back it up", "dashboard_backup_database_hint": "Create a database backup file. Do it regularly.", "dashboard_backup_persona_hint": "You can backup your persona in the following options.", @@ -161,7 +162,7 @@ "post_substitute_label": "Mask", "privacy_policy": "Privacy Policy", "privacy_policy_link": "https://legal.mask.io/maskbook/", - "private_key": "Private key", + "private_key": "Private Key", "persona_rename": "Rename Persona", "persona_name": "Persona Name", "qr_code": "QR Code", @@ -264,7 +265,6 @@ "wallet_price": "Price", "wallet_balance": "Balance", "wallet_value": "Value", - "wallet_chain": "on {{chain}}", "wallet_confirmation_hint": "I confirm that I need to create a wallet.", "wallet_new": "New Wallet", "wallet_notification": "This will create a new wallet other than the default wallet. You are responsible for keeping the private key to the wallet safe. Please also note that Mask won't be able to pay for your transactions on Ethereum.", diff --git a/packages/maskbook/src/_locales/ja/messages.json b/packages/maskbook/src/_locales/ja/messages.json index 054fe327987a..e39e305f084c 100644 --- a/packages/maskbook/src/_locales/ja/messages.json +++ b/packages/maskbook/src/_locales/ja/messages.json @@ -23,7 +23,7 @@ "new_avatar_url_placeholder": "空白のままであれば変更されません。", "backup": "バックアップする", "backup_database": "データベースをバックアップする", - "backup_persona": "人格をバックアップする", + "backup_persona": "ペルソナをバックアップする", "backup_wallet": "ウォレットをバックアップする", "backup_wallet_hint": "12の単語型パスフレーズ または以下の 秘密鍵大切に保管します。これがあればウォレットを復元できます。", "backup_qrcode_error": "不明なエラー: 再度 試してください。", @@ -41,15 +41,16 @@ "contacts": "連絡先", "groups": "グループ", "create": "作成", - "create_a_persona": "人格を作成", - "create_persona": "人格を作成", + "create_a_persona": "ペルソナを作成", + "create_persona": "ペルソナを作成", "creating": "作成中…", "dashboard": "ダッシュボード", "dashboard_tab_token": "トークン", "dashboard_tab_collectibles": "収集物", + "dashboard_tab_transactions": "", "dashboard_backup_database_confirmation": "バックアップしますか?", "dashboard_backup_database_hint": "データベースのバックアップを作成します。日常的に行いましょう。", - "dashboard_backup_persona_hint": "次の方法のうちから人格のバックアップ方法を選びましょう。", + "dashboard_backup_persona_hint": "次の方法のうちからペルソナのバックアップ方法を選びましょう。", "dashboard_delete_persona_confirm_hint": "{{name}}を削除しますか? この操作は取り消すことができません。", "dashboard_disconnect_profile_hint": "{{domain}}の@{{profile}}から{{persona}}を消し去りますか?この操作は取り消すことができません。", "dashboard_import_database_hint": "前回のデータベースバックアップから", @@ -58,7 +59,7 @@ "dashboard_mobile_test_link": "https://mask.io/download-links/#mobile", "dashboard_paste_database_base64_hint": "ここに Base64 を貼り付ける…", "dashboard_paste_database_backup_hint": "データベースのバックアップをテキストとしてここに貼り付けてくだい。", - "dashboard_persona_import_dialog_hint": "以下の方法で人格インポートできます", + "dashboard_persona_import_dialog_hint": "以下の方法でペルソナインポートできます", "dashboard_restoration_successful_hint": "{{time}}に取得されたバックアップから復元しました。", "dashboard_source_code": "ソースコード", "dashboard_source_code_link": "https://github.com/DimensionDev/Maskbook", @@ -78,7 +79,7 @@ "delete": "削除", "delete_contact": "連絡先を削除する", "delete_contact_confirmation": "{{contact}} を削除しますか? この操作は取り消せません。", - "delete_persona": "人格を削除する", + "delete_persona": "ペルソナを削除する", "delete_wallet": "ウォレットを削除する", "delete_wallet_hint": "本気ですか?
もしバックアップしなければ ここにある全てのお金を失う ことになります。", "hide_token": "トークンを隠す", @@ -101,7 +102,7 @@ "buy_now": "今すぐ購入", "setup_guide_optional": "[オプション]", "setup_guide_find_username_title": "ユーザー名を探す", - "setup_guide_find_username_text": "Mask の人格と接続するためにユーザー名が必要です。
正しいものを入力してください。", + "setup_guide_find_username_text": "Mask のペルソナと接続するためにユーザー名が必要です。
正しいものを入力してください。", "setup_guide_connect_auto": "接続する", "setup_guide_connect_failed": "失敗しました… もう一度お試しください。", "setup_guide_create_post_auto": "今すぐ作成", @@ -113,14 +114,14 @@ "import": "インポート", "import_failed": "インポートに失敗", "import_wallet": "ウォレットをインポート", - "import_your_persona": "人格をインポート", + "import_your_persona": "ペルソナをインポート", "internal_id": "内部 ID", "keywords": "キーワード", "language_en": "English", "language_zh": "中文", "language_ja": "日本語", "mnemonic_words": "パスフレーズ", - "my_personas": "私の人格アカウント", + "my_personas": "私のペルソナアカウント", "my_wallets": "私のウォレット", "name": "名前", "nickname": "ニックネーム", @@ -138,13 +139,13 @@ "person_or_group_in_list_0": "空のグループです", "person_or_group_in_list_many": "{{people}}… 全部で{{count}}", "person_or_group_in_list_many_no_preview": "全部で{{count}}", - "personas": "人格", + "personas": "ペルソナ", "popup_missing_permission": "Mask は権限がないため動作しません。", "popup_request_permission": "修正します", - "popup_current_persona": "現在の人格アカウント", + "popup_current_persona": "現在のペルソナアカウント", "popup_enter_dashboard": "ダッシュボードに入る", "popup_connect_wallet": "現在のウォレット", - "popup_setup_first_persona": "最初の人格アカウントを作る", + "popup_setup_first_persona": "最初のペルソナアカウントを作る", "profiles": "プロフィール", "posts": "投稿", "post_dialog__button": "終了", @@ -162,8 +163,8 @@ "privacy_policy": "プライバシー・ポリシー(個人情報に関する方針)", "privacy_policy_link": "https://legal.mask.io/maskbook/", "private_key": "秘密鍵", - "persona_rename": "人格の名前を変更", - "persona_name": "人格アカウントの名前", + "persona_rename": "ペルソナの名前を変更", + "persona_name": "ペルソナアカウントの名前", "qr_code": "QR コード", "reload": "再読み込み", "hide": "隠す", @@ -211,14 +212,14 @@ "set_up_consent_data_collection_privacy_policy_2": "プライバシーポリシー", "set_up_consent_data_collection_privacy_policy_3": "。", "set_up_create_persona": "はじめましょう", - "set_up_create_persona_hint": "次のステップでは、ソーシャルネットワークのアカウントを人格アカウントに接続することができます。", + "set_up_create_persona_hint": "次のステップでは、ソーシャルネットワークのアカウントをペルソナアカウントに接続することができます。", "set_up_connect": "「{{name}}」に接続する", "set_up_connect_hint": "Facebook と Twitter が Mask に対応しています。", "set_up_restore": "データベースの復元", "set_up_restore_hint": "以前のデータベースバックアップから復元します。", "set_up_restore_fail": "復元に失敗しました。", "set_up_advance_restore": "高度な復元オプション", - "set_up_advance_restore_hint": "以下の方法で人格のバックアップをインポートすることができます。", + "set_up_advance_restore_hint": "以下の方法でペルソナのバックアップをインポートすることができます。", "set_up_advance_restore_fail": "復元に失敗しました。", "set_up_restore_confirmation": "データベースの復元", "set_up_restore_confirmation_hint": "のように以下のデータがインポートされます。", @@ -264,7 +265,6 @@ "wallet_price": "価格", "wallet_balance": "残高", "wallet_value": "価値", - "wallet_chain": "", "wallet_confirmation_hint": "ウォレットを作成する必要があることを確認します。", "wallet_new": "新規ウォレット名", "wallet_notification": "デフォルトのウォレット以外の新しい通貨ウォレットを作成します。ウォレットの秘密鍵を安全に保管する責任はあなたにあります。また、Mask が Ethereum 上でのあなたの取引の支払いをすることはありませんのでご注意ください。", diff --git a/packages/maskbook/src/_locales/zh/messages.json b/packages/maskbook/src/_locales/zh/messages.json index 70f6f53cf30b..f0c007e37b18 100644 --- a/packages/maskbook/src/_locales/zh/messages.json +++ b/packages/maskbook/src/_locales/zh/messages.json @@ -47,6 +47,7 @@ "dashboard": "儀表板", "dashboard_tab_token": "Token", "dashboard_tab_collectibles": "收藏品", + "dashboard_tab_transactions": "", "dashboard_backup_database_confirmation": "好,現在備份", "dashboard_backup_database_hint": "創建資料庫備份文件。要經常做。", "dashboard_backup_persona_hint": "您可以通過以下任一方式備份角色。", @@ -264,7 +265,6 @@ "wallet_price": "價格", "wallet_balance": "餘額", "wallet_value": "價值", - "wallet_chain": "", "wallet_confirmation_hint": "我確認需要創建一個錢包。", "wallet_new": "", "wallet_notification": "這將創建一個默認錢包以外的新錢包。您有責任確保錢包的私鑰安全。另請注意,Mask 將無法為您在以太坊上的交易付款。", diff --git a/packages/maskbook/src/background-service.ts b/packages/maskbook/src/background-service.ts index 3d9cf5d37466..f05e0099eeda 100644 --- a/packages/maskbook/src/background-service.ts +++ b/packages/maskbook/src/background-service.ts @@ -8,7 +8,7 @@ Object.defineProperty(globalThis, 'crypto', { configurable: true, enumerable: tr import './extension/service' // setup Services.* import './utils/native-rpc' // setup Android and iOS API server -import './provider.worker' // TODO: HMR setup social network providers +import './social-network-adaptor' // setup social network providers import './extension/background-script/Jobs' // start jobs import './plugins/PluginSerivce' // setup plugins import './utils/debug/general' diff --git a/packages/maskbook/src/components/DataSource/useActivatedUI.ts b/packages/maskbook/src/components/DataSource/useActivatedUI.ts index f3c7d9168201..5f45e25cebaf 100644 --- a/packages/maskbook/src/components/DataSource/useActivatedUI.ts +++ b/packages/maskbook/src/components/DataSource/useActivatedUI.ts @@ -1,21 +1,28 @@ import type { Profile } from '../../database' import { useValueRef } from '../../utils/hooks/useValueRef' -import { getActivatedUI } from '../../social-network/ui' +import { activatedSocialNetworkUI, globalUIState } from '../../social-network' import { currentSelectedIdentity } from '../../settings/settings' import { useMemo } from 'react' +import { ValueRef } from '@dimensiondev/holoflows-kit' +import type { SocialNetworkUI } from '../../social-network' +import { ProfileIdentifier } from '@dimensiondev/maskbook-shared' export function useFriendsList() { - const ref = useValueRef(getActivatedUI().friendsRef) + const ref = useValueRef(globalUIState.friends) return useMemo(() => [...ref.values()], [ref]) } + +const default_ = new ValueRef({ identifier: ProfileIdentifier.unknown }) export function useLastRecognizedIdentity() { - return useValueRef(getActivatedUI().lastRecognizedIdentity) + return useValueRef( + activatedSocialNetworkUI.collecting.identityProvider?.lastRecognized || default_, + ) } export function useMyIdentities() { - return useValueRef(getActivatedUI().myIdentitiesRef) + return useValueRef(globalUIState.profiles) } export function useCurrentIdentity(noDefault?: boolean): Profile | null { const all = useMyIdentities() - const current = useValueRef(currentSelectedIdentity[getActivatedUI().networkIdentifier]) + const current = useValueRef(currentSelectedIdentity[activatedSocialNetworkUI.networkIdentifier]) return all.find((i) => i.identifier.toText() === current) || (noDefault ? null : all[0]) } diff --git a/packages/maskbook/src/components/DataSource/usePostInfo.ts b/packages/maskbook/src/components/DataSource/usePostInfo.ts index a6b8164f77f5..a009d9bffb9a 100644 --- a/packages/maskbook/src/components/DataSource/usePostInfo.ts +++ b/packages/maskbook/src/components/DataSource/usePostInfo.ts @@ -4,7 +4,7 @@ import { ValueRef } from '@dimensiondev/holoflows-kit' import { useValueRef } from '../../utils/hooks/useValueRef' import { ObservableMap, ObservableSet } from '../../utils/ObservableMapSet' import { useObservableValues } from '../../utils/hooks/useObservableMapSet' -import { getActivatedUI } from '../../social-network/ui' +import { activatedSocialNetworkUI } from '../../social-network' export const PostInfoContext = createContext(emptyPostInfo) export function usePostInfo() { @@ -17,11 +17,10 @@ type ValidKeys = { }[keyof PostInfo] export function usePostLink() { - const ui = getActivatedUI() const postID = usePostInfoDetails('postID') const postIdentifier = usePostInfoDetails('postIdentifier') if (!postID || !postIdentifier) return '' - return ui.name === 'twitter' ? `https://twitter.com/${postIdentifier.identifier.userId}/status/${postID}` : '' + return activatedSocialNetworkUI.utils.getPostURL?.(postIdentifier) ?? '' } export function usePostInfoDetails( diff --git a/packages/maskbook/src/components/InjectedComponents/DecryptedPost/DecryptedPostDebug.tsx b/packages/maskbook/src/components/InjectedComponents/DecryptedPost/DecryptedPostDebug.tsx index 10ff7947cb32..568a3014f7f8 100644 --- a/packages/maskbook/src/components/InjectedComponents/DecryptedPost/DecryptedPostDebug.tsx +++ b/packages/maskbook/src/components/InjectedComponents/DecryptedPost/DecryptedPostDebug.tsx @@ -10,7 +10,6 @@ import { useValueRef } from '../../../utils/hooks/useValueRef' import { debugModeSetting } from '../../../settings/settings' import { isEnvironment, Environment } from '@dimensiondev/holoflows-kit' import { usePostInfoDetails } from '../../DataSource/usePostInfo' -import { getActivatedUI } from '../../../social-network/ui' import { deconstructPayload, PayloadAlpha38 } from '../../../utils/type-transform/Payload' interface DebugDisplayProps { @@ -21,7 +20,7 @@ interface DebugDisplayProps { export function DecryptedPostDebug(props: Partial) { const postBy = usePostInfoDetails('postBy') const postContent = usePostInfoDetails('postContent') - const payloadResult = useMemo(() => deconstructPayload(postContent, getActivatedUI().payloadDecoder), [postContent]) + const payloadResult = useMemo(() => deconstructPayload(postContent), [postContent]) const setting = useValueRef(debugModeSetting) const isDebugging = isEnvironment(Environment.ManifestOptions) ? true : setting diff --git a/packages/maskbook/src/components/InjectedComponents/DialogDismissIcon.tsx b/packages/maskbook/src/components/InjectedComponents/DialogDismissIcon.tsx index 70d2d12116ee..00fe368d0df8 100644 --- a/packages/maskbook/src/components/InjectedComponents/DialogDismissIcon.tsx +++ b/packages/maskbook/src/components/InjectedComponents/DialogDismissIcon.tsx @@ -1,7 +1,8 @@ import { useTheme, useMediaQuery } from '@material-ui/core' import CloseIcon from '@material-ui/icons/Close' import ArrowBackRoundedIcon from '@material-ui/icons/ArrowBackRounded' -import { getActivatedUI } from '../../social-network/ui' +import { activatedSocialNetworkUI } from '../../social-network' +import { isTwitter } from '../../social-network-adaptor/twitter.com/base' export interface DialogDismissIconUIProps { disableArrowBack?: boolean @@ -9,7 +10,7 @@ export interface DialogDismissIconUIProps { export function DialogDismissIconUI(props: DialogDismissIconUIProps) { return useMediaQuery(`(min-width: ${useTheme().breakpoints.width('sm')}px)`) || props.disableArrowBack ? ( - + ) : ( ) diff --git a/packages/maskbook/src/components/InjectedComponents/PostDialog.tsx b/packages/maskbook/src/components/InjectedComponents/PostDialog.tsx index 33353c56ac83..14bef6f25b0b 100644 --- a/packages/maskbook/src/components/InjectedComponents/PostDialog.tsx +++ b/packages/maskbook/src/components/InjectedComponents/PostDialog.tsx @@ -21,7 +21,7 @@ import type { Profile, Group } from '../../database' import { useFriendsList, useCurrentIdentity, useMyIdentities } from '../DataSource/useActivatedUI' import { currentImagePayloadStatus, debugModeSetting } from '../../settings/settings' import { useValueRef } from '../../utils/hooks/useValueRef' -import { editActivatedPostMetadata, getActivatedUI } from '../../social-network/ui' +import { activatedSocialNetworkUI } from '../../social-network' import Services from '../../extension/service' import { SelectRecipientsUI, SelectRecipientsUIProps } from '../shared/SelectRecipients/SelectRecipients' import { ClickableChip } from '../shared/SelectRecipients/ClickableChip' @@ -36,7 +36,6 @@ import { EthereumTokenType } from '../../web3/types' import { isDAI, isOKB } from '../../web3/helpers' import { PluginRedPacketTheme } from '../../plugins/RedPacket/theme' import { useI18N } from '../../utils/i18n-next-ui' -import { twitterUrl } from '../../social-network-provider/twitter.com/utils/url' import { RedPacketMetadataReader } from '../../plugins/RedPacket/helpers' import { PluginUI } from '../../plugins/PluginUI' import { Result } from 'ts-results' @@ -44,9 +43,10 @@ import { ErrorBoundary } from '../shared/ErrorBoundary' import { InjectedDialog } from '../shared/InjectedDialog' import { DebugMetadataInspector } from '../shared/DebugMetadataInspector' import { PluginStage } from '../../plugins/types' -import { Election2020MetadataReader } from '../../plugins/Election2020/helpers' -import { COTM_MetadataReader } from '../../plugins/COTM/helpers' import { Flags } from '../../utils/flags' +import { editActivatedPostMetadata, globalTypedMessageMetadata } from '../../protocols/typed-message/global-state' +import { isTwitter } from '../../social-network-adaptor/twitter.com/base' +import { SteganographyTextPayload } from './SteganographyTextPayload' const defaultTheme = {} @@ -231,7 +231,7 @@ export function PostDialogUI(props: PostDialogUIProps) { )} {showPostMetadata && ( (getActivatedUI().typedMessageMetadata.value = meta)} + onNewMetadata={(meta) => (globalTypedMessageMetadata.value = meta)} onExit={() => setShowPostMetadata(false)} meta={props.postContent.meta || new Map()} /> @@ -270,7 +270,7 @@ export function PostDialog({ reason: props_reason = 'timeline', ...props }: Post const onlyMyself = props.onlyMyself ?? onlyMyselfLocal const [shareToEveryoneLocal, setShareToEveryone] = useState(true) const shareToEveryone = props.shareToEveryone ?? shareToEveryoneLocal - const typedMessageMetadata = or(props.typedMessageMetadata, useValueRef(getActivatedUI().typedMessageMetadata)) + const typedMessageMetadata = or(props.typedMessageMetadata, useValueRef(globalTypedMessageMetadata)) const [open, setOpen] = or(props.open, useState(false)) as NonNullable //#region TypedMessage @@ -287,12 +287,12 @@ export function PostDialog({ reason: props_reason = 'timeline', ...props }: Post const [currentShareTarget, setCurrentShareTarget] = useState<(Profile | Group)[]>(() => []) //#endregion //#region Image Based Payload Switch - const imagePayloadStatus = useValueRef(currentImagePayloadStatus[getActivatedUI().networkIdentifier]) + const imagePayloadStatus = useValueRef(currentImagePayloadStatus[activatedSocialNetworkUI.networkIdentifier]) const imagePayloadEnabled = imagePayloadStatus === 'true' const onImagePayloadSwitchChanged = or( props.onImagePayloadSwitchChanged, useCallback((checked) => { - currentImagePayloadStatus[getActivatedUI().networkIdentifier].value = String(checked) + currentImagePayloadStatus[activatedSocialNetworkUI.networkIdentifier].value = String(checked) }, []), ) //#endregion @@ -307,15 +307,11 @@ export function PostDialog({ reason: props_reason = 'timeline', ...props }: Post currentIdentity!.identifier, !!shareToEveryone, ) - const activeUI = getActivatedUI() + const activeUI = activatedSocialNetworkUI // TODO: move into the plugin system const redPacketMetadata = RedPacketMetadataReader(typedMessageMetadata) - const election2020Metadata = Election2020MetadataReader(typedMessageMetadata) - const COTM_Metadata = COTM_MetadataReader(typedMessageMetadata) if (imagePayloadEnabled) { const isRedPacket = redPacketMetadata.ok - const isElection2020 = election2020Metadata.ok - const isCOTM = COTM_Metadata.ok const isErc20 = redPacketMetadata.ok && redPacketMetadata.val && @@ -327,44 +323,32 @@ export function PostDialog({ reason: props_reason = 'timeline', ...props }: Post const relatedText = t('additional_post_box__steganography_post_pre', { random: new Date().toLocaleString(), }) - activeUI.taskPasteIntoPostBox(relatedText, { - autoPasteFailedRecover: false, + activeUI.automation.nativeCompositionDialog?.appendText?.(relatedText, { + recover: false, }) - activeUI.taskUploadToPostBox(encrypted, { - template: isRedPacket - ? isDai - ? 'dai' - : isOkb - ? 'okb' - : 'eth' - : isElection2020 - ? 'v3' - : isCOTM - ? 'v4' - : 'v2', - autoPasteFailedRecover: true, - relatedText, + const img = await SteganographyTextPayload( + isRedPacket ? (isDai ? 'dai' : isOkb ? 'okb' : 'eth') : 'v2', + encrypted, + ) + activeUI.automation.nativeCompositionDialog?.attachImage?.(img, { + recover: true, + relatedTextPayload: relatedText, }) } else { let text = t('additional_post_box__encrypted_post_pre', { encrypted }) if (redPacketMetadata.ok) { if (i18n.language?.includes('zh')) { - text = - activeUI.networkIdentifier === twitterUrl.hostIdentifier - ? `用 #mask_io @realMaskbook 開啟紅包 ${encrypted}` - : `用 #mask_io 開啟紅包 ${encrypted}` + text = isTwitter(activeUI) + ? `用 #mask_io @realMaskbook 開啟紅包 ${encrypted}` + : `用 #mask_io 開啟紅包 ${encrypted}` } else { - text = - activeUI.networkIdentifier === twitterUrl.hostIdentifier - ? `Claim this Red Packet with #mask_io @realMaskbook ${encrypted}` - : `Claim this Red Packet with #mask_io ${encrypted}` + text = isTwitter(activeUI) + ? `Claim this Red Packet with #mask_io @realMaskbook ${encrypted}` + : `Claim this Red Packet with #mask_io ${encrypted}` } } - if (election2020Metadata.ok) { - text = `Claim the election special NFT with @realMaskbook (mask.io) #mask_io #twitternft ${encrypted}` - } - activeUI.taskPasteIntoPostBox(text, { - autoPasteFailedRecover: true, + activeUI.automation.nativeCompositionDialog?.appendText?.(text, { + recover: true, }) } // This step write data on gun. @@ -382,7 +366,7 @@ export function PostDialog({ reason: props_reason = 'timeline', ...props }: Post setShareToEveryone(true) setPostBoxContent(makeTypedMessageText('')) setCurrentShareTarget([]) - getActivatedUI().typedMessageMetadata.value = new Map() + globalTypedMessageMetadata.value = new Map() }, [setOpen]), ) const onFinishButtonClicked = useCallback(() => { diff --git a/packages/maskbook/src/components/InjectedComponents/PostDialogHint.tsx b/packages/maskbook/src/components/InjectedComponents/PostDialogHint.tsx index 5bc3dd1c2e4b..12dfe98da9f9 100644 --- a/packages/maskbook/src/components/InjectedComponents/PostDialogHint.tsx +++ b/packages/maskbook/src/components/InjectedComponents/PostDialogHint.tsx @@ -5,8 +5,8 @@ import { useMyIdentities } from '../DataSource/useActivatedUI' import type { BannerProps } from '../Welcomes/Banner' import { useValueRef } from '../../utils/hooks/useValueRef' import { currentSetupGuideStatus } from '../../settings/settings' -import { getActivatedUI } from '../../social-network/ui' -import { isMobileFacebook } from '../../social-network-provider/facebook.com/utils/isMobile' +import { activatedSocialNetworkUI } from '../../social-network' +import { isMobileFacebook } from '../../social-network-adaptor/facebook.com/utils/isMobile' import { MaskbookSharpIcon } from '../../resources/MaskbookIcon' import { makeStyles } from '@material-ui/core/styles' @@ -61,7 +61,7 @@ export interface PostDialogHintProps extends Partial { } export function PostDialogHint(props: PostDialogHintProps) { const identities = useMyIdentities() - const connecting = useValueRef(currentSetupGuideStatus[getActivatedUI().networkIdentifier]) + const connecting = useValueRef(currentSetupGuideStatus[activatedSocialNetworkUI.networkIdentifier]) if (connecting || identities.length === 0) return null return {}} {...props} /> } diff --git a/packages/maskbook/src/components/InjectedComponents/PostInspector.tsx b/packages/maskbook/src/components/InjectedComponents/PostInspector.tsx index 2c0923ba0137..b3db15657eaf 100644 --- a/packages/maskbook/src/components/InjectedComponents/PostInspector.tsx +++ b/packages/maskbook/src/components/InjectedComponents/PostInspector.tsx @@ -6,7 +6,6 @@ import Services from '../../extension/service' import { ProfileIdentifier } from '../../database/type' import type { Profile } from '../../database' import { useCurrentIdentity, useFriendsList } from '../DataSource/useActivatedUI' -import { getActivatedUI } from '../../social-network/ui' import { useValueRef } from '../../utils/hooks/useValueRef' import { debugModeSetting } from '../../settings/settings' import { DebugList } from '../DebugModeUI/DebugList' @@ -16,6 +15,7 @@ import { PluginUI } from '../../plugins/PluginUI' import { usePostInfoDetails, usePostInfo } from '../DataSource/usePostInfo' import { ErrorBoundary } from '../shared/ErrorBoundary' import type { PayloadAlpha40_Or_Alpha39, PayloadAlpha38 } from '../../utils/type-transform/Payload' +import { decodePublicKeyUI } from '../../social-network/utils/text-payload-ui' export interface PostInspectorProps { onDecrypted(post: TypedMessage, raw: string): void @@ -36,7 +36,7 @@ export function PostInspector(props: PostInspectorProps) { const whoAmI = useCurrentIdentity() const friends = useFriendsList() const [alreadySelectedPreviously, setAlreadySelectedPreviously] = useState([]) - const provePost = useMemo(() => getActivatedUI().publicKeyDecoder(postContent), [postContent]) + const provePost = useMemo(() => decodePublicKeyUI(postContent), [postContent]) const { value: sharedListOfPost } = useAsync(async () => { if (!whoAmI || !whoAmI.identifier.equals(postBy) || !encryptedPost.ok) return [] diff --git a/packages/maskbook/src/components/InjectedComponents/SetupGuide.tsx b/packages/maskbook/src/components/InjectedComponents/SetupGuide.tsx index e759c5e8db08..5574b124f0ac 100644 --- a/packages/maskbook/src/components/InjectedComponents/SetupGuide.tsx +++ b/packages/maskbook/src/components/InjectedComponents/SetupGuide.tsx @@ -24,7 +24,7 @@ import stringify from 'json-stable-stringify' import ActionButton, { ActionButtonPromise } from '../../extension/options-page/DashboardComponents/ActionButton' import { noop } from 'lodash-es' import { useI18N } from '../../utils/i18n-next-ui' -import { getActivatedUI } from '../../social-network/ui' +import { activatedSocialNetworkUI } from '../../social-network' import { currentSetupGuideStatus } from '../../settings/settings' import type { SetupGuideCrossContextStatus } from '../../settings/types' import { MaskMessage } from '../../utils/messages' @@ -36,6 +36,8 @@ import { WalletRPC } from '../../plugins/Wallet/messages' import { useMatchXS } from '../../utils/hooks/useMatchXS' import { extendsTheme } from '../../utils/theme' +import { useLastRecognizedIdentity } from '../DataSource/useActivatedUI' +import { makeTypedMessageText } from '../../protocols/typed-message' export enum SetupGuideStep { FindUsername = 'find-username', @@ -364,7 +366,8 @@ interface FindUsernameProps extends Partial { function FindUsername({ username, onConnect, onDone, onClose, onUsernameChange = noop }: FindUsernameProps) { const { t } = useI18N() - const ui = getActivatedUI() + const ui = activatedSocialNetworkUI + const gotoProfilePageImpl = ui.automation.redirect?.profilePage const classes = useWizardDialogStyles() const findUsernameClasses = useFindUsernameStyles() @@ -378,9 +381,9 @@ function FindUsername({ username, onConnect, onDone, onClose, onUsernameChange = const onJump = useCallback( (ev: React.MouseEvent) => { ev.preventDefault() - ui.taskGotoProfilePage(new ProfileIdentifier(ui.networkIdentifier, username)) + gotoProfilePageImpl?.(new ProfileIdentifier(ui.networkIdentifier, username)) }, - [ui, username], + [gotoProfilePageImpl, ui.networkIdentifier, username], ) return ( onUsernameChange(e.target.value)} onKeyDown={onKeyDown} inputProps={{ 'data-testid': 'username_input' }}> - - - - - + {gotoProfilePageImpl ? ( + + + + + + ) : null} } @@ -539,7 +544,7 @@ function SetupGuideUI(props: SetupGuideUIProps) { const { t } = useI18N() const { persona } = props const [step, setStep] = useState(SetupGuideStep.FindUsername) - const ui = getActivatedUI() + const ui = activatedSocialNetworkUI //#region parse setup status const lastStateRef = currentSetupGuideStatus[ui.networkIdentifier] @@ -559,13 +564,13 @@ function SetupGuideUI(props: SetupGuideUIProps) { //#endregion //#region setup username - const lastRecognized = useValueRef(getActivatedUI().lastRecognizedIdentity) + const lastRecognized = useLastRecognizedIdentity() const getUsername = () => lastState.username || (lastRecognized.identifier.isUnknown ? '' : lastRecognized.identifier.userId) const [username, setUsername] = useState(getUsername) useEffect( () => - getActivatedUI().lastRecognizedIdentity.addListener((val) => { + activatedSocialNetworkUI.collecting.identityProvider?.lastRecognized.addListener((val) => { if (username === '' && !val.identifier.isUnknown) setUsername(val.identifier.userId) }), [username], @@ -586,7 +591,7 @@ function SetupGuideUI(props: SetupGuideUIProps) { username, persona: persona.toText(), } as SetupGuideCrossContextStatus) - ui.taskGotoNewsFeedPage() + ui.automation.redirect?.newsFeed?.() setStep(SetupGuideStep.SayHelloWorld) break case SetupGuideStep.SayHelloWorld: @@ -634,7 +639,7 @@ function SetupGuideUI(props: SetupGuideUIProps) { const onCreate = async () => { const content = t('setup_guide_say_hello_content') copyToClipboard(content) - ui.taskOpenComposeBox(content, { + ui.automation.maskCompositionDialog?.open?.(makeTypedMessageText(content), { shareToEveryOne: true, }) } diff --git a/packages/maskbook/src/components/InjectedComponents/SteganographyTextPayload.ts b/packages/maskbook/src/components/InjectedComponents/SteganographyTextPayload.ts new file mode 100644 index 000000000000..2cebc1925843 --- /dev/null +++ b/packages/maskbook/src/components/InjectedComponents/SteganographyTextPayload.ts @@ -0,0 +1,22 @@ +import { decodeArrayBuffer } from '@dimensiondev/kit' +import Services from '../../extension/service' +import { ImageTemplateTypes, ImagePayloadURLs } from '../../resources/image-payload' +import { activatedSocialNetworkUI } from '../../social-network' +import { downloadUrl } from '../../utils/utils' + +export async function SteganographyTextPayload(template: ImageTemplateTypes, text: string) { + const pass = activatedSocialNetworkUI.configuration.steganography?.password?.() || 'mask' + const blankImage = await downloadUrl(ImagePayloadURLs[template]).then((x) => x.arrayBuffer()) + const secretImage = new Uint8Array( + decodeArrayBuffer( + await Services.Steganography.encodeImage(new Uint8Array(blankImage), { + text, + pass, + template, + grayscaleAlgorithm: activatedSocialNetworkUI.configuration.steganography?.grayscaleAlgorithm, + }), + ), + ) + const blob = new Blob([secretImage], { type: 'image/png' }) + return blob +} diff --git a/packages/maskbook/src/components/Welcomes/Banner.tsx b/packages/maskbook/src/components/Welcomes/Banner.tsx index c94780abce1e..19b85ef0c832 100644 --- a/packages/maskbook/src/components/Welcomes/Banner.tsx +++ b/packages/maskbook/src/components/Welcomes/Banner.tsx @@ -3,7 +3,7 @@ import { makeStyles } from '@material-ui/core/styles' import { Theme, IconButton } from '@material-ui/core' import { useLastRecognizedIdentity, useMyIdentities } from '../DataSource/useActivatedUI' import Services from '../../extension/service' -import { getActivatedUI } from '../../social-network/ui' +import { activatedSocialNetworkUI } from '../../social-network' import { setStorage } from '../../utils/browser.storage' import { useStylesExtends } from '../custom-ui-helper' import { DashboardRoute } from '../../extension/options-page/Route' @@ -49,7 +49,7 @@ export interface BannerProps extends Partial {} export function Banner(props: BannerProps) { const lastRecognizedIdentity = useLastRecognizedIdentity() const { nextStep } = props - const networkIdentifier = getActivatedUI()?.networkIdentifier + const networkIdentifier = activatedSocialNetworkUI?.networkIdentifier const identities = useMyIdentities() const [value, onChange] = useState('') const defaultNextStep = useCallback(() => { @@ -67,7 +67,7 @@ export function Banner(props: BannerProps) { defaultValue: lastRecognizedIdentity.identifier.isUnknown ? '' : lastRecognizedIdentity.identifier.userId, value, onChange, - isValid: getActivatedUI().isValidUsername, + isValid: activatedSocialNetworkUI.utils.isValidUsername || (() => true), } : ('hidden' as const) diff --git a/packages/maskbook/src/components/custom-ui-helper.tsx b/packages/maskbook/src/components/custom-ui-helper.tsx index f3d9ecc75c02..17a90f9a9ffd 100644 --- a/packages/maskbook/src/components/custom-ui-helper.tsx +++ b/packages/maskbook/src/components/custom-ui-helper.tsx @@ -1,6 +1,4 @@ /// -import { safeGetActiveUI } from '../utils/safeRequire' - // Priority: classes from props > configHooks > defaultStyles export function useStylesExtends( defaultStyles: Record, @@ -30,10 +28,6 @@ export function mergeClasses( return result } -export function getCustomUIOverwrite() { - return safeGetActiveUI().componentOverwrite || {} -} - /** * In case of y is a react hooks call, we should always call the hooks. So we can't use x ?? y directly. */ diff --git a/packages/maskbook/src/components/shared/ChooseIdentity.tsx b/packages/maskbook/src/components/shared/ChooseIdentity.tsx index 9cf23938f7cd..bd6c74f9fbfe 100644 --- a/packages/maskbook/src/components/shared/ChooseIdentity.tsx +++ b/packages/maskbook/src/components/shared/ChooseIdentity.tsx @@ -4,7 +4,7 @@ import ExpandMoreIcon from '@material-ui/icons/ExpandMore' import type { Profile } from '../../database' import { List, Accordion, AccordionSummary } from '@material-ui/core' import { ProfileOrGroupInList, ProfileOrGroupInListProps } from './SelectPeopleAndGroups' -import { getActivatedUI } from '../../social-network/ui' +import { activatedSocialNetworkUI } from '../../social-network' import { useCurrentIdentity, useMyIdentities } from '../DataSource/useActivatedUI' import { ProfileIdentifier } from '../../database/type' import { currentSelectedIdentity } from '../../settings/settings' @@ -80,7 +80,7 @@ export function ChooseIdentity(props: ChooseIdentityProps) { const expansionPanelSummaryClasses = useStylesExtends(useAccordionSummaryStyle(), props) const [expanded, setExpanded] = useState(false) - const ui = getActivatedUI() + const ui = activatedSocialNetworkUI const current = useCurrentIdentity() || ({ identifier: ProfileIdentifier.unknown, nickname: 'Nothing' } as Profile) const onChange = useCallback(() => { diff --git a/packages/maskbook/src/components/shared/InjectedDialog.tsx b/packages/maskbook/src/components/shared/InjectedDialog.tsx index d05d4f94f5ea..c373f22b160f 100644 --- a/packages/maskbook/src/components/shared/InjectedDialog.tsx +++ b/packages/maskbook/src/components/shared/InjectedDialog.tsx @@ -16,9 +16,10 @@ import { import { Children, cloneElement } from 'react' import { useI18N } from '../../utils/i18n-next-ui' import { usePortalShadowRoot } from '../../utils/shadow-root/usePortalShadowRoot' -import { getCustomUIOverwrite, mergeClasses, useStylesExtends } from '../custom-ui-helper' +import { mergeClasses, useStylesExtends } from '../custom-ui-helper' import { DialogDismissIconUI } from '../InjectedComponents/DialogDismissIcon' import { ErrorBoundary } from '@dimensiondev/maskbook-theme' +import { activatedSocialNetworkUI } from '../../social-network' const useStyles = makeStyles((theme) => createStyles({ @@ -51,7 +52,7 @@ export interface InjectedDialogProps extends withClasses } export function InjectedDialog(props: InjectedDialogProps) { const classes = useStyles() - const overwrite = getCustomUIOverwrite() + const overwrite = activatedSocialNetworkUI.customization.componentOverwrite || {} props = overwrite.InjectedDialog?.props?.(props) ?? props const { dialogActions, diff --git a/packages/maskbook/src/extension/background-script/CryptoServices/addPerson.ts b/packages/maskbook/src/extension/background-script/CryptoServices/addPerson.ts index 5582a2dbb68e..94ef8572eec4 100644 --- a/packages/maskbook/src/extension/background-script/CryptoServices/addPerson.ts +++ b/packages/maskbook/src/extension/background-script/CryptoServices/addPerson.ts @@ -1,6 +1,6 @@ import { GunAPI as Gun2 } from '../../../network/gun' import { ProfileIdentifier, PostIdentifier } from '../../../database/type' -import getCurrentNetworkWorker from '../../../social-network/utils/getCurrentNetworkWorker' +import { getNetworkWorker } from '../../../social-network' import { verifyOthersProve } from './verifyOthersProve' import { memoizePromise } from '../../../utils/memoize' import { queryPersonaRecord } from '../../../database' @@ -8,7 +8,7 @@ import type { PersonaRecord } from '../../../database/Persona/Persona.db' import { i18n } from '../../../utils/i18n-next' async function getUserPublicKeyFromBio(user: ProfileIdentifier) { - const profile = await getCurrentNetworkWorker(user).unwrap().fetchProfile(user) + const profile = await (await getNetworkWorker(user)).tasks.fetchProfile!(user) if (!(await verifyOthersProve(profile.bioContent, user))) { throw new Error('Not in bio!') } @@ -20,7 +20,7 @@ async function getUserPublicKeyFromProvePost(user: ProfileIdentifier) { throw new Error('Not in gun!') } const postId = new PostIdentifier(user, proverPostID) - const post = await getCurrentNetworkWorker(postId).unwrap().fetchPostContent(postId) + const post = await (await getNetworkWorker(user)).tasks.fetchPostContent!(postId) if ((await verifyOthersProve(post, user)) === false) throw new Error('Not in prove post!') } async function getUserPublicKeyFromNetwork(user: ProfileIdentifier) { diff --git a/packages/maskbook/src/extension/background-script/CryptoServices/appendShareTarget.ts b/packages/maskbook/src/extension/background-script/CryptoServices/appendShareTarget.ts index 9bedb136fddb..1ebd0d2f4b27 100644 --- a/packages/maskbook/src/extension/background-script/CryptoServices/appendShareTarget.ts +++ b/packages/maskbook/src/extension/background-script/CryptoServices/appendShareTarget.ts @@ -4,7 +4,7 @@ import { ProfileIdentifier, PostIVIdentifier } from '../../../database/type' import { prepareRecipientDetail } from './prepareRecipientDetail' import { cryptoProviderTable } from './cryptoProviderTable' import { updatePostDB, RecipientDetail, RecipientReason } from '../../../database/post' -import { getNetworkWorker } from '../../../social-network/worker' +import { getNetworkWorkerUninitialized } from '../../../social-network/worker' import { queryPrivateKey, queryLocalKey } from '../../../database' import { IdentifierMap } from '../../../database/IdentifierMap' import type { AESJsonWebKey, EC_Private_JsonWebKey } from '../../../modules/CryptoAlgorithm/interfaces/utils' @@ -35,12 +35,8 @@ export async function appendShareTarget( myPrivateKey, Array.from(toKey.values()), ) - Gun2.publishPostAESKeyOnGun2( - version, - iv, - getNetworkWorker(whoAmI).unwrap().gunNetworkHint, - othersAESKeyEncrypted, - ) + const gunHint = getNetworkWorkerUninitialized(whoAmI)?.gunNetworkHint + gunHint && Gun2.publishPostAESKeyOnGun2(version, iv, gunHint, othersAESKeyEncrypted) updatePostDB( { identifier: new PostIVIdentifier(whoAmI.network, iv), diff --git a/packages/maskbook/src/extension/background-script/CryptoServices/debugShowAllPossibleHashForPost.ts b/packages/maskbook/src/extension/background-script/CryptoServices/debugShowAllPossibleHashForPost.ts index 738bb1d13b7c..4f1d42a69448 100644 --- a/packages/maskbook/src/extension/background-script/CryptoServices/debugShowAllPossibleHashForPost.ts +++ b/packages/maskbook/src/extension/background-script/CryptoServices/debugShowAllPossibleHashForPost.ts @@ -1,10 +1,11 @@ import type { PostIVIdentifier } from '../../../database/type' import { hashPostSalt, hashCryptoKey, hashCryptoKeyUnstable } from '../../../network/gun/version.2/hash' import { queryProfilesWithQuery, queryPublicKey } from '../../../database' -import { getNetworkWorker } from '../../../social-network/worker' +import { getNetworkWorkerUninitialized } from '../../../social-network/worker' export async function debugShowAllPossibleHashForPost(post: PostIVIdentifier, payloadVersion: -38 | -39 | -40) { const friends = await queryProfilesWithQuery((x) => x.identifier.network === post.network) + const gunHint = getNetworkWorkerUninitialized(post.network)?.gunNetworkHint return Promise.all( friends .filter((x) => x.linkedPersona) @@ -12,7 +13,7 @@ export async function debugShowAllPossibleHashForPost(post: PostIVIdentifier, pa async (x) => [ x.identifier.toText(), - (await hashPostSalt(post.postIV, getNetworkWorker(post).unwrap().gunNetworkHint)) + + (await hashPostSalt(post.postIV, gunHint ?? '')) + '-' + (await (payloadVersion <= -39 ? hashCryptoKeyUnstable : hashCryptoKey)( (await queryPublicKey(x.identifier))!, diff --git a/packages/maskbook/src/extension/background-script/CryptoServices/decryptFrom.ts b/packages/maskbook/src/extension/background-script/CryptoServices/decryptFrom.ts index bf80d23b272e..067fd9e575ff 100644 --- a/packages/maskbook/src/extension/background-script/CryptoServices/decryptFrom.ts +++ b/packages/maskbook/src/extension/background-script/CryptoServices/decryptFrom.ts @@ -8,7 +8,7 @@ import { queryPersonaRecord, queryLocalKey } from '../../../database' import { ProfileIdentifier, PostIVIdentifier } from '../../../database/type' import { queryPostDB, updatePostDB } from '../../../database/post' import { addPerson } from './addPerson' -import { getNetworkWorker } from '../../../social-network/worker' +import { getNetworkWorker, getNetworkWorkerUninitialized } from '../../../social-network/worker' import { cryptoProviderTable } from './cryptoProviderTable' import type { PersonaRecord } from '../../../database/Persona/Persona.db' import { verifyOthersProve } from './verifyOthersProve' @@ -24,6 +24,8 @@ import type { SharedAESKeyGun2 } from '../../../network/gun/version.2' import { MaskMessage } from '../../../utils/messages' import { GunAPI } from '../../../network/gun' import { calculatePostKeyPartition } from '../../../network/gun/version.2/hash' +import { Err, Ok, Result } from 'ts-results' +import { decodeTextPayloadWorker } from '../../../social-network/utils/text-payload-worker' type Progress = ( | { progress: 'finding_person_public_key' | 'finding_post_key' | 'init' | 'decode_post' } @@ -131,8 +133,10 @@ async function* decryptFromPayloadWithProgress_raw( if (successDecryptionCache.has(cacheKey)) return successDecryptionCache.get(cacheKey)! yield makeProgress('init') - const authorNetworkWorker = getNetworkWorker(author.network) - if (authorNetworkWorker.err) return makeError(authorNetworkWorker.val) + const authorNetworkWorker = Result.wrap(() => getNetworkWorkerUninitialized(author.network)).andThen((x) => + x ? Ok(x) : Err(new Error('Worker not found')), + ) + if (authorNetworkWorker.err) return makeError(authorNetworkWorker.val as Error) const data = post const { version } = data @@ -177,10 +181,10 @@ async function* decryptFromPayloadWithProgress_raw( if (!mine?.privateKey) return makeError(DecryptFailedReason.MyCryptoKeyNotFound) const { publicKey: minePublic, privateKey: minePrivate } = mine - const networkWorker = getNetworkWorker(whoAmI) + const networkWorker = getNetworkWorkerUninitialized(whoAmI) try { if (version === -40) throw '' - const gunNetworkHint = networkWorker.unwrap().gunNetworkHint + const gunNetworkHint = networkWorker!.gunNetworkHint const { keyHash, postHash } = await calculatePostKeyPartition(version, iv, minePublic, gunNetworkHint) yield { type: 'debug', debug: 'debug_finding_hash', hash: [postHash, keyHash] } } catch {} @@ -312,9 +316,9 @@ async function* decryptFromImageUrlWithProgress_raw( }) if (post.indexOf('🎼') !== 0 && !/https:\/\/.+\..+\/(\?PostData_v\d=)?%20(.+)%40/.test(post)) return makeError(i18n.t('service_decode_image_payload_failed'), true) - const worker = getNetworkWorker(author) - if (worker.err) return makeError(worker.val) - const payload = deconstructPayload(post, worker.val.payloadDecoder) + const worker = await Result.wrapAsync(() => getNetworkWorker(author)) + if (worker.err) return makeError(worker.val as Error) + const payload = deconstructPayload(post, await decodeTextPayloadWorker(author)) if (payload.err) return makeError(payload.val) return yield* decryptFromText(payload.val, author, whoAmI, publicShared) } diff --git a/packages/maskbook/src/extension/background-script/CryptoServices/encryptTo.ts b/packages/maskbook/src/extension/background-script/CryptoServices/encryptTo.ts index 887880afa570..9ecc1e0f8a98 100644 --- a/packages/maskbook/src/extension/background-script/CryptoServices/encryptTo.ts +++ b/packages/maskbook/src/extension/background-script/CryptoServices/encryptTo.ts @@ -11,6 +11,7 @@ import { queryPersonaByProfileDB } from '../../../database/Persona/Persona.db' import { compressSecp256k1Key } from '../../../utils/type-transform/SECP256k1-Compression' import { i18n } from '../../../utils/i18n-next' import type { TypedMessage } from '../../../protocols/typed-message' +import { encodeTextPayloadWorker } from '../../../social-network/utils/text-payload-worker' type EncryptedText = string type OthersAESKeyEncryptedToken = string @@ -86,9 +87,9 @@ export async function encryptTo( }) const postAESKeyToken = encodeArrayBuffer(iv) - const worker = getNetworkWorker(whoAmI).unwrap() + const worker = await getNetworkWorker(whoAmI)! OthersAESKeyEncryptedMap.set(postAESKeyToken, [worker.gunNetworkHint, othersAESKeyEncrypted]) - return [constructAlpha38(payload, worker.payloadEncoder), postAESKeyToken] + return [constructAlpha38(payload, await encodeTextPayloadWorker(whoAmI)), postAESKeyToken] } /** diff --git a/packages/maskbook/src/extension/background-script/CryptoServices/getMyProveBio.ts b/packages/maskbook/src/extension/background-script/CryptoServices/getMyProveBio.ts index a558070a04f3..b4a809f314ba 100644 --- a/packages/maskbook/src/extension/background-script/CryptoServices/getMyProveBio.ts +++ b/packages/maskbook/src/extension/background-script/CryptoServices/getMyProveBio.ts @@ -1,9 +1,8 @@ import { compressSecp256k1Key } from '../../../utils/type-transform/SECP256k1-Compression' import { ProfileIdentifier, PersonaIdentifier } from '../../../database/type' -import { getNetworkWorker } from '../../../social-network/worker' +import { encodePublicKeyWorker } from '../../../social-network/utils/text-payload-worker' import { queryPublicKey } from '../../../database' -//#endregion -//#region ProvePost, create & verify + export async function getMyProveBio( whoAmI: ProfileIdentifier | PersonaIdentifier, networkIdentifier?: string, @@ -11,10 +10,9 @@ export async function getMyProveBio( const myIdentity = await queryPublicKey(whoAmI) if (!myIdentity) return null const compressed = compressSecp256k1Key(myIdentity, 'public') - // FIXME: wait for #191 return whoAmI instanceof ProfileIdentifier - ? getNetworkWorker(whoAmI.network).unwrap().publicKeyEncoder(compressed) + ? (await encodePublicKeyWorker(whoAmI))(compressed) : networkIdentifier - ? getNetworkWorker(networkIdentifier).unwrap().publicKeyEncoder(compressed) + ? (await encodePublicKeyWorker(networkIdentifier))(compressed) : compressed } diff --git a/packages/maskbook/src/extension/background-script/CryptoServices/verifyOthersProve.ts b/packages/maskbook/src/extension/background-script/CryptoServices/verifyOthersProve.ts index 88a846b0cf18..33a631711684 100644 --- a/packages/maskbook/src/extension/background-script/CryptoServices/verifyOthersProve.ts +++ b/packages/maskbook/src/extension/background-script/CryptoServices/verifyOthersProve.ts @@ -1,11 +1,10 @@ import { decompressSecp256k1Key } from '../../../utils/type-transform/SECP256k1-Compression' import { ECKeyIdentifierFromJsonWebKey, ProfileIdentifier } from '../../../database/type' -import { getNetworkWorker } from '../../../social-network/worker' +import { decodePublicKeyWorker } from '../../../social-network/utils/text-payload-worker' import { createProfileWithPersona, queryPersonaRecord } from '../../../database' export async function verifyOthersProve(bio: string | { raw: string }, others: ProfileIdentifier): Promise { - const compressedX = - typeof bio === 'string' ? getNetworkWorker(others.network).unwrap().publicKeyDecoder(bio) : [bio.raw] + const compressedX = typeof bio === 'string' ? (await decodePublicKeyWorker(others.network))(bio) : [bio.raw] if (!compressedX) return false const publicKey = compressedX .map((x) => { diff --git a/packages/maskbook/src/extension/background-script/IdentityService.ts b/packages/maskbook/src/extension/background-script/IdentityService.ts index 2fd819e5bc52..9f97b101bb40 100644 --- a/packages/maskbook/src/extension/background-script/IdentityService.ts +++ b/packages/maskbook/src/extension/background-script/IdentityService.ts @@ -32,7 +32,7 @@ export { queryProfile, queryProfilePaged } from '../../database' export function queryProfiles(network?: string): Promise { return queryProfilesWithQuery(network) } -export async function queryMyProfiles(network?: string) { +export async function queryMyProfiles(network?: string): Promise { const myPersonas = (await queryMyPersonas(network)).filter((x) => !x.uninitialized) return Promise.all( myPersonas diff --git a/packages/maskbook/src/extension/background-script/SteganographyService.ts b/packages/maskbook/src/extension/background-script/SteganographyService.ts index 463ea2fc4b92..9b64e41ad0ae 100644 --- a/packages/maskbook/src/extension/background-script/SteganographyService.ts +++ b/packages/maskbook/src/extension/background-script/SteganographyService.ts @@ -8,7 +8,7 @@ import { getDimension } from '../../utils/image' import { decodeArrayBuffer, encodeArrayBuffer } from '../../utils/type-transform/String-ArrayBuffer' import { assertEnvironment, Environment } from '@dimensiondev/holoflows-kit' -import type { ImageTemplateTypes } from '../../social-network/ui' +import type { ImageTemplateTypes } from '../../resources/image-payload' assertEnvironment(Environment.ManifestBackground) type Mask = 'v1' | 'v2' | 'v4' | 'transparent' diff --git a/packages/maskbook/src/extension/content-script/tasks.ts b/packages/maskbook/src/extension/content-script/tasks.ts index 5f0b030bcbb3..40b80cbd037f 100644 --- a/packages/maskbook/src/extension/content-script/tasks.ts +++ b/packages/maskbook/src/extension/content-script/tasks.ts @@ -1,38 +1,27 @@ -import { - AutomatedTabTask, - isEnvironment, - AutomatedTabTaskRuntimeOptions, - Environment, -} from '@dimensiondev/holoflows-kit' -import { ProfileIdentifier, ECKeyIdentifier, Identifier } from '../../database/type' -import { disableOpenNewTabInBackgroundSettings, currentSetupGuideStatus } from '../../settings/settings' -import type { SetupGuideCrossContextStatus } from '../../settings/types' -import type { SocialNetworkUI } from '../../social-network/ui' +import { AutomatedTabTask, AutomatedTabTaskRuntimeOptions } from '@dimensiondev/holoflows-kit' +import { disableOpenNewTabInBackgroundSettings } from '../../settings/settings' +import type { SocialNetworkUI } from '../../social-network' import { memoizePromise } from '../../utils/memoize' -import { safeGetActiveUI } from '../../utils/safeRequire' import Serialization from '../../utils/type-transform/Serialization' -import { sideEffect } from '../../utils/side-effects' -import { untilDocumentReady } from '../../utils/dom' import { delay } from '../../utils/utils' import { Flags } from '../../utils/flags' - -function getActivatedUI() { - return safeGetActiveUI() -} +import { activatedSocialNetworkUI } from '../../social-network' const _tasks = { - getPostContent: () => getActivatedUI().taskGetPostContent(), + getPostContent: async () => (await activatedSocialNetworkUI.collecting.getPostContent?.()) || '', /** * Access profile page * Get Profile */ - getProfile: (identifier: ProfileIdentifier) => getActivatedUI().taskGetProfile(identifier), + getProfile: async () => (await activatedSocialNetworkUI.collecting.getProfile?.()) || { bioContent: '' }, /** * Access main page * Paste text into PostBox */ - pasteIntoPostBox: async (text: string, options: Parameters[1]) => - getActivatedUI().taskPasteIntoPostBox(text, options), + pasteIntoPostBox: async ( + text: string, + options: SocialNetworkUI.AutomationCapabilities.NativeCompositionAttachTextOptions, + ) => activatedSocialNetworkUI.automation.nativeCompositionDialog?.appendText?.(text, options), /** * Fetch a url in the current context */ @@ -45,9 +34,6 @@ const _tasks = { }, (x) => x, ), - async SetupGuide(for_: ECKeyIdentifier) { - getActivatedUI().taskStartSetupGuide(for_) - }, async noop() {}, } const realTasks = AutomatedTabTask(_tasks, { @@ -121,19 +107,3 @@ export function exclusiveTasks(...args: Parameters) { }, }) } - -sideEffect.then(untilDocumentReady).then(() => { - if (!isEnvironment(Environment.ContentScript)) return - - //#region setup guide - const network = getActivatedUI().networkIdentifier - const id = currentSetupGuideStatus[network].value - const onStatusUpdate = (id: string) => { - const { persona, status }: SetupGuideCrossContextStatus = JSON.parse(id || '{}') - if (persona && status) _tasks.SetupGuide(Identifier.fromString(persona, ECKeyIdentifier).unwrap()) - } - currentSetupGuideStatus[network].addListener(onStatusUpdate) - currentSetupGuideStatus[network].readyPromise.then(onStatusUpdate) - onStatusUpdate(id) - //#endregion -}) diff --git a/packages/maskbook/src/extension/options-page/DashboardComponents/CollectibleList/Card.tsx b/packages/maskbook/src/extension/options-page/DashboardComponents/CollectibleList/Card.tsx new file mode 100644 index 000000000000..718cb30ba11f --- /dev/null +++ b/packages/maskbook/src/extension/options-page/DashboardComponents/CollectibleList/Card.tsx @@ -0,0 +1,57 @@ +import Tilt from 'react-tilt' +import { Card, createStyles, Link, makeStyles } from '@material-ui/core' +import { Image } from '../../../../components/shared/Image' +import { MaskbookIconOutlined } from '../../../../resources/MaskbookIcon' + +const useStyles = makeStyles((theme) => + createStyles({ + root: { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + borderRadius: 4, + position: 'relative', + backgroundColor: theme.palette.background.paper, + }, + placeholder: { + width: 64, + height: 64, + opacity: 0.1, + }, + }), +) + +export interface CollectibleCardProps { + url: string + link: string + canViewOnEtherscan?: boolean +} + +export function CollectibleCard(props: CollectibleCardProps) { + const classes = useStyles(props) + + return ( + + + + {props.url ? ( + + ) : ( + + )} + + + + ) +} diff --git a/packages/maskbook/src/extension/options-page/DashboardComponents/CollectibleList/index.tsx b/packages/maskbook/src/extension/options-page/DashboardComponents/CollectibleList/index.tsx new file mode 100644 index 000000000000..71360d3b6b40 --- /dev/null +++ b/packages/maskbook/src/extension/options-page/DashboardComponents/CollectibleList/index.tsx @@ -0,0 +1,86 @@ +import { Box, Button, makeStyles, Skeleton, Typography } from '@material-ui/core' +import { CollectibleCard } from './Card' +import { useCollectibles } from '../../../../plugins/Wallet/hooks/useCollectibles' +import { AssetProvider } from '../../../../plugins/Wallet/types' +import { useAccount } from '../../../../web3/hooks/useAccount' + +const useStyles = makeStyles((theme) => ({ + root: { + display: 'flex', + flexWrap: 'wrap', + padding: theme.spacing(1), + }, + card: { + padding: theme.spacing(1), + }, + description: { + textAlign: 'center', + marginTop: theme.spacing(0.5), + maxWidth: 160, + }, +})) + +export function CollectibleList() { + const account = useAccount() + const classes = useStyles() + const { + value: collectibles = [], + loading: collectiblesLoading, + error: collectiblesError, + retry: collectiblesRetry, + } = useCollectibles(account, AssetProvider.OPENSEAN) + + if (collectiblesLoading) + return ( + + {new Array(3).fill(0).map((_, i) => ( + + + + + ))} + + ) + + if (collectiblesError || collectibles.length === 0) + return ( + + No collectible found. + + + ) + + return ( + + {collectibles.map((x) => ( +
+ +
+ + {x.name ?? x.collection.slug} + +
+
+ ))} +
+ ) +} diff --git a/packages/maskbook/src/extension/options-page/DashboardComponents/ProfileBox.tsx b/packages/maskbook/src/extension/options-page/DashboardComponents/ProfileBox.tsx index f92c3f4cf61e..d6cedade6dd8 100644 --- a/packages/maskbook/src/extension/options-page/DashboardComponents/ProfileBox.tsx +++ b/packages/maskbook/src/extension/options-page/DashboardComponents/ProfileBox.tsx @@ -1,8 +1,7 @@ import type { Persona } from '../../../database' -import { definedSocialNetworkWorkers } from '../../../social-network/worker' +import { definedSocialNetworkUIs, loadSocialNetworkUI } from '../../../social-network' import ProviderLine, { ProviderLineProps } from './ProviderLine' -import getCurrentNetworkUI from '../../../social-network/utils/getCurrentNetworkUI' import { currentSetupGuideStatus } from '../../../settings/settings' import type { SetupGuideCrossContextStatus } from '../../../settings/types' import { exclusiveTasks } from '../../content-script/tasks' @@ -11,6 +10,7 @@ import { useModal } from '../DashboardDialogs/Base' import { DashboardPersonaUnlinkConfirmDialog } from '../DashboardDialogs/Persona' import { delay } from '../../../utils/utils' import { SetupGuideStep } from '../../../components/InjectedComponents/SetupGuide' +import { Flags } from '../../../utils/flags' interface ProfileBoxProps { persona: Persona | null @@ -20,21 +20,30 @@ interface ProfileBoxProps { export default function ProfileBox({ persona, ProviderLineProps }: ProfileBoxProps) { const profiles = persona ? [...persona.linkedProfiles] : [] - const providers = [...definedSocialNetworkWorkers].map((i) => { - const profile = profiles.find(([key, value]) => key.network === i.networkIdentifier) - return { - internalName: i.name, - network: i.networkIdentifier, - connected: !!profile, - userId: profile?.[0].userId, - identifier: profile?.[0], - } - }) + const providers = [...definedSocialNetworkUIs.values()] + .map((i) => { + const profile = profiles.find(([key, value]) => key.network === i.networkIdentifier) + if (i.networkIdentifier === 'localhost') return null! + return { + internalName: i.networkIdentifier, + network: i.networkIdentifier, + connected: !!profile, + userId: profile?.[0].userId, + identifier: profile?.[0], + } + }) + .filter((x) => x) const [detachProfile, , setDetachProfile] = useModal(DashboardPersonaUnlinkConfirmDialog) const onConnect = async (provider: typeof providers[0]) => { + const ui = await loadSocialNetworkUI(provider.internalName) + // TODO: what if it does not have a (single?) home page? (e.g. mastdon) + // TODO: maybe add a new action "onConnect"? + const home = ui.utils.getHomePage?.() if (!persona) return - if (!(await getCurrentNetworkUI(provider.network).requestPermission())) return + if (!Flags.no_web_extension_dynamic_permission_request) { + if (!(await ui.permission.request())) return + } // FIXME: // setting storage race condition here @@ -43,12 +52,7 @@ export default function ProfileBox({ persona, ProviderLineProps }: ProfileBoxPro persona: persona.identifier.toText(), } as SetupGuideCrossContextStatus) await delay(100) - exclusiveTasks(getCurrentNetworkUI(provider.network).getHomePage(), { - active: true, - autoClose: false, - important: true, - memorable: false, - }).SetupGuide(persona.identifier) + home && browser.tabs.create({ active: true, url: home }) } const onDisconnect = (provider: typeof providers[0]) => { setDetachProfile({ nickname: persona?.nickname, identifier: provider.identifier }) diff --git a/packages/maskbook/src/extension/options-page/DashboardComponents/ProviderLine.tsx b/packages/maskbook/src/extension/options-page/DashboardComponents/ProviderLine.tsx index 06fa71c76ebe..531efe27410a 100644 --- a/packages/maskbook/src/extension/options-page/DashboardComponents/ProviderLine.tsx +++ b/packages/maskbook/src/extension/options-page/DashboardComponents/ProviderLine.tsx @@ -7,8 +7,8 @@ import { useI18N } from '../../../utils/i18n-next-ui' import LinkOffIcon from '@material-ui/icons/LinkOff' import ArrowForwardIcon from '@material-ui/icons/ArrowForward' import { useStylesExtends } from '../../../components/custom-ui-helper' -import { facebookDomain } from '../../../social-network-provider/facebook.com/utils/isMobile' -import { twitterDomain } from '../../../social-network-provider/twitter.com/utils/isMobile' +import { facebookDomain } from '../../../social-network-adaptor/facebook.com/utils/isMobile' +import { twitterDomain } from '../../../social-network-adaptor/twitter.com/utils/isMobile' import { Flags } from '../../../utils/flags' const useStyles = makeStyles((theme) => @@ -54,6 +54,7 @@ export interface ProviderLineProps extends withClasses { export default function ProviderLine(props: ProviderLineProps) { const { t } = useI18N() + // TODO: internal name should not be used to display const { internalName, network, connected, userId, onAction } = props const classes = useStylesExtends(useStyles(), props) return ( diff --git a/packages/maskbook/src/extension/options-page/DashboardComponents/TokenActionsBar.tsx b/packages/maskbook/src/extension/options-page/DashboardComponents/TokenActionsBar.tsx index a40d5433d6c9..11d9d3605906 100644 --- a/packages/maskbook/src/extension/options-page/DashboardComponents/TokenActionsBar.tsx +++ b/packages/maskbook/src/extension/options-page/DashboardComponents/TokenActionsBar.tsx @@ -13,6 +13,7 @@ import { PluginTransakMessages } from '../../../plugins/Transak/messages' import { useAccount } from '../../../web3/hooks/useAccount' import { DashboardWalletTransferDialog } from './TransferDialog' import { useChainIdValid } from '../../../web3/hooks/useChainState' +import { forwardRef } from 'react' //#region token actions menu export interface TokenActionsMenuProps extends withClasses { @@ -35,7 +36,7 @@ export interface TokenActionsMenuProps extends withClasses { ) => void } -export function TokenActionsMenu(props: TokenActionsMenuProps) { +export const TokenActionsMenu = forwardRef((props: TokenActionsMenuProps) => { const { chain, wallet, token, onTransferDialogOpen, onHideTokenConfirmDialogOpen } = props const account = useAccount() const { t } = useI18N() @@ -70,7 +71,7 @@ export function TokenActionsMenu(props: TokenActionsMenuProps) { ) -} +}) //#endregion //#region ERC20 token actions bar diff --git a/packages/maskbook/src/extension/options-page/DashboardComponents/TransactionList/Record.tsx b/packages/maskbook/src/extension/options-page/DashboardComponents/TransactionList/Record.tsx new file mode 100644 index 000000000000..dae8b3825dd4 --- /dev/null +++ b/packages/maskbook/src/extension/options-page/DashboardComponents/TransactionList/Record.tsx @@ -0,0 +1,31 @@ +import { createStyles, makeStyles, Typography } from '@material-ui/core' +import type { FC } from 'react' +import { TokenIcon } from '../TokenIcon' +import classNames from 'classnames' +import type { Transaction } from '../../../../plugins/Wallet/services' + +const useStyles = makeStyles((theme) => + createStyles({ + root: { display: 'flex', alignItems: 'center' }, + direction: { marginLeft: theme.spacing(0.5), marginRight: theme.spacing(0.5) }, + amount: { marginRight: theme.spacing(0.5) }, + symbol: { marginRight: theme.spacing(0.5) }, + receive: { color: '#00c087' }, + }), +) + +export const Record: FC<{ pair: Transaction['pairs'][number] }> = ({ pair }) => { + const styles = useStyles() + return ( + + + {pair.direction === 'send' ? '-' : '+'} + {pair.amount.toFixed(4)} + {pair.symbol} + + ) +} diff --git a/packages/maskbook/src/extension/options-page/DashboardComponents/TransactionList/Row.tsx b/packages/maskbook/src/extension/options-page/DashboardComponents/TransactionList/Row.tsx new file mode 100644 index 000000000000..d2594a4a6bd8 --- /dev/null +++ b/packages/maskbook/src/extension/options-page/DashboardComponents/TransactionList/Row.tsx @@ -0,0 +1,71 @@ +import type { FC } from 'react' +import classNames from 'classnames' +import { isNil } from 'lodash-es' +import { createStyles, Link, makeStyles, TableCell, TableRow, Typography } from '@material-ui/core' +import { Record } from './Record' +import type { Transaction } from '../../../../plugins/Wallet/services' + +interface Props { + transaction: Transaction +} + +const useStyles = makeStyles(() => + createStyles({ + failed: { opacity: 0.3 }, + hidden: { visibility: 'hidden' }, + overflow: { + overflow: 'hidden', + textOverflow: 'ellipsis', + whiteSpace: 'nowrap', + }, + }), +) + +export const Row: FC = ({ transaction }) => { + const styles = useStyles() + return ( + + + + {transaction.timeAt.toLocaleString()} + +
+ + + + {transaction.type} + +
+ + + {transaction.pairs.map((pair, index) => ( + + ))} + + + + Gas fee + + + {transaction.gasFee?.eth.toFixed(4)} ETH + + + {transaction.gasFee?.usd.toFixed(2)} USD + + + + ) +} + +const Address: FC<{ id: string | undefined }> = ({ id }) => ( + + {id?.slice(0, 5)} + ... + {id?.slice(id.length - 5)} + +) diff --git a/packages/maskbook/src/extension/options-page/DashboardComponents/TransactionList/index.tsx b/packages/maskbook/src/extension/options-page/DashboardComponents/TransactionList/index.tsx new file mode 100644 index 000000000000..7a8c1849ebd1 --- /dev/null +++ b/packages/maskbook/src/extension/options-page/DashboardComponents/TransactionList/index.tsx @@ -0,0 +1,80 @@ +import { + Box, + Button, + createStyles, + makeStyles, + Skeleton, + Table, + TableBody, + TableCell, + TableRow, + Typography, +} from '@material-ui/core' +import { useTransactions } from '../../../../plugins/Wallet/hooks/useTransactions' +import { TransactionProvider } from '../../../../plugins/Wallet/types' +import { useAccount } from '../../../../web3/hooks/useAccount' +import { Row } from './Row' + +const useStyles = makeStyles(() => + createStyles({ + fixed: { tableLayout: 'fixed' }, + }), +) + +export function TransactionList() { + const styles = useStyles() + const account = useAccount() + const { + value: transactions = [], + loading: transactionsLoading, + error: transactionsError, + retry: transactionsRetry, + } = useTransactions(account, TransactionProvider.DEBANK) + + if (transactionsLoading) + return ( + + + {new Array(3).fill(0).map((_, i) => ( + + + + + + ))} + +
+ ) + + if (transactionsError || transactions.length === 0) + return ( + + No transaction found. + + + ) + + return ( + + + {transactions.map((transaction) => ( + + ))} + +
+ ) +} diff --git a/packages/maskbook/src/extension/options-page/DashboardComponents/WalletAssetsTable.tsx b/packages/maskbook/src/extension/options-page/DashboardComponents/WalletAssetsTable.tsx index 76a0b221d31b..9078d38ab595 100644 --- a/packages/maskbook/src/extension/options-page/DashboardComponents/WalletAssetsTable.tsx +++ b/packages/maskbook/src/extension/options-page/DashboardComponents/WalletAssetsTable.tsx @@ -4,6 +4,7 @@ import { IconButton, createStyles, makeStyles, + Skeleton, Table, TableBody, TableCell, @@ -174,8 +175,10 @@ function ViewDetailed(props: ViewDetailedProps) { ))} -
- {menu} + + + {menu} + {hideTokenConfirmDialog} {transeferDialog} @@ -231,8 +234,6 @@ export function WalletAssetsTable(props: WalletAssetsTableProps) { const [viewLength, setViewLength] = useState(MAX_TOKENS_LENGTH) const [price, setPrice] = useState(MIN_VALUE) - if (detailedTokensLoading) return null - if (detailedTokensError) return ( - {detailedTokens - .filter((x) => - Number(price) !== 0 - ? new BigNumber(x.value?.[CurrencyType.USD] || '0').isGreaterThan(price) || - x.token.type === EthereumTokenType.Ether - : true, - ) - .map((y, idx) => - idx < viewLength ? ( - - ) : null, - )} + {detailedTokensLoading + ? new Array(3).fill(0).map((_, i) => ( + + + + + + + + + + + + + + + + + + )) + : detailedTokens + .filter((x) => + Number(price) !== 0 + ? new BigNumber(x.value?.[CurrencyType.USD] || '0').isGreaterThan(price) || + x.token.type === EthereumTokenType.Ether + : true, + ) + .map((y, idx) => + idx < viewLength ? ( + + ) : null, + )} diff --git a/packages/maskbook/src/extension/options-page/DashboardComponents/WalletContent.tsx b/packages/maskbook/src/extension/options-page/DashboardComponents/WalletContent.tsx index 543d3c9e2901..e9b6b1e9e8b2 100644 --- a/packages/maskbook/src/extension/options-page/DashboardComponents/WalletContent.tsx +++ b/packages/maskbook/src/extension/options-page/DashboardComponents/WalletContent.tsx @@ -20,9 +20,9 @@ import { WalletAssetsTable } from './WalletAssetsTable' import { useRemoteControlledDialog } from '../../../utils/hooks/useRemoteControlledDialog' import { PluginTransakMessages } from '../../../plugins/Transak/messages' import { Flags } from '../../../utils/flags' -import { ElectionTokenAlbum } from '../../../plugins/Election2020/UI/ElectionTokenAlbum' -import { TokenAlbum as COTM_TokenAlbum } from '../../../plugins/COTM/UI/TokenAlbum' import { useChainIdValid } from '../../../web3/hooks/useChainState' +import { TransactionList } from './TransactionList' +import { CollectibleList } from './CollectibleList' const useStyles = makeStyles((theme) => createStyles({ @@ -132,6 +132,7 @@ export const WalletContent = forwardRef(({ w onChange={onTabChange}> + @@ -178,8 +179,8 @@ export const WalletContent = forwardRef(({ w {tabIndex === 0 ? ( ) : null} - {Flags.COTM_enabled && tabIndex === 1 ? : null} - {Flags.election2020_enabled && tabIndex === 1 ? : null} + {tabIndex === 1 ? : null} + {tabIndex === 2 ? : null} {addToken} {walletBackup} diff --git a/packages/maskbook/src/extension/options-page/index.tsx b/packages/maskbook/src/extension/options-page/index.tsx index fed4b1a70a0d..08527046fd6c 100644 --- a/packages/maskbook/src/extension/options-page/index.tsx +++ b/packages/maskbook/src/extension/options-page/index.tsx @@ -1,4 +1,4 @@ -import '../../provider.worker' +import '../../social-network-adaptor' import '../../setup.ui' import { useState } from 'react' diff --git a/packages/maskbook/src/extension/popup-page/UI.tsx b/packages/maskbook/src/extension/popup-page/UI.tsx index 4ecf1eb6623a..68121ac7869e 100644 --- a/packages/maskbook/src/extension/popup-page/UI.tsx +++ b/packages/maskbook/src/extension/popup-page/UI.tsx @@ -1,4 +1,4 @@ -import '../../social-network-provider/popup-page/index' +import '../../social-network-adaptor/popup-page/index' import '../../setup.ui' import { useCallback, memo } from 'react' @@ -7,9 +7,8 @@ import { ThemeProvider, makeStyles, Theme, withStyles, StylesProvider, jssPreset import { Button, Paper, Divider, Typography, Box } from '@material-ui/core' import { useMaskbookTheme } from '../../utils/theme' import { ChooseIdentity } from '../../components/shared/ChooseIdentity' -import { getActivatedUI } from '../../social-network/ui' +import { activatedSocialNetworkUI } from '../../social-network' import { useI18N } from '../../utils/i18n-next-ui' -import { useValueRef } from '../../utils/hooks/useValueRef' import { delay } from '../../utils/utils' import { WalletMessages } from '../../plugins/Wallet/messages' import { useRemoteControlledDialog } from '../../utils/hooks/useRemoteControlledDialog' @@ -17,6 +16,8 @@ import { Alert } from '@material-ui/core' import { useAsyncRetry } from 'react-use' import { MaskbookUIRoot } from '../../UIRoot' import { create } from 'jss' +import { useMyIdentities } from '../../components/DataSource/useActivatedUI' +import { Flags } from '../../utils/flags' const GlobalCss = withStyles({ '@global': { @@ -74,10 +75,10 @@ function PopupUI() { const { t } = useI18N() const classes = useStyles() - const ui = getActivatedUI() - const identities = useValueRef(ui.myIdentitiesRef) + const ui = activatedSocialNetworkUI + const identities = useMyIdentities() - const { value: hasPermission = true, retry: checkPermission } = useAsyncRetry(ui.hasPermission) + const { value: hasPermission = true, retry: checkPermission } = useAsyncRetry(ui.permission.has) const onEnter = useCallback((event: React.MouseEvent) => { if (event.shiftKey) { @@ -122,7 +123,10 @@ function PopupUI() { color="primary" variant="contained" size="small" - onClick={() => ui.requestPermission().then(checkPermission)}> + onClick={() => { + if (Flags.no_web_extension_dynamic_permission_request) return + ui.permission.request().then(checkPermission) + }}> {t('popup_request_permission')} diff --git a/packages/maskbook/src/extension/popup-page/index.tsx b/packages/maskbook/src/extension/popup-page/index.tsx index 4e2a5789bce1..20fb61ec32d0 100644 --- a/packages/maskbook/src/extension/popup-page/index.tsx +++ b/packages/maskbook/src/extension/popup-page/index.tsx @@ -1,7 +1,6 @@ -import '../../social-network-provider/popup-page/index' import '../../setup.ui' - +import { activateSocialNetworkUI } from '../../social-network' import { SSRRenderer } from '../../utils/SSRRenderer' import { Popup } from './UI' -export default SSRRenderer() +activateSocialNetworkUI().then(() => SSRRenderer()) diff --git a/packages/maskbook/src/manifest.json b/packages/maskbook/src/manifest.json index c8e2b96318c5..71933cdaad0a 100644 --- a/packages/maskbook/src/manifest.json +++ b/packages/maskbook/src/manifest.json @@ -1,6 +1,6 @@ { "name": "Mask Network", - "version": "1.29.9", + "version": "1.29.12", "manifest_version": 2, "permissions": ["storage", "downloads", "webNavigation", "activeTab"], "optional_permissions": ["", "notifications"], diff --git a/packages/maskbook/src/plugins/Airdrop/UI/AirdropClaimCard.tsx b/packages/maskbook/src/plugins/Airdrop/UI/AirdropClaimCard.tsx index 503d8cd718dd..720416a34536 100644 --- a/packages/maskbook/src/plugins/Airdrop/UI/AirdropClaimCard.tsx +++ b/packages/maskbook/src/plugins/Airdrop/UI/AirdropClaimCard.tsx @@ -5,9 +5,8 @@ import { useCallback, useEffect, useState } from 'react' import { useStylesExtends } from '../../../components/custom-ui-helper' import { usePostLink } from '../../../components/DataSource/usePostInfo' import { AirdropIcon } from '../../../resources/AirdropIcon' -import { getActivatedUI } from '../../../social-network/ui' +import { activatedSocialNetworkUI } from '../../../social-network' import { useRemoteControlledDialog } from '../../../utils/hooks/useRemoteControlledDialog' -import { useShareLink } from '../../../utils/hooks/useShareLink' import { useAccount } from '../../../web3/hooks/useAccount' import { TransactionStateType } from '../../../web3/hooks/useTransactionState' import type { ERC20TokenDetailed } from '../../../web3/types' @@ -19,6 +18,7 @@ import { CheckStateType, useCheckCallback } from '../hooks/useCheckCallback' import { ClaimDialog } from './ClaimDialog' import ActionButton from '../../../extension/options-page/DashboardComponents/ActionButton' import { useChainId } from '../../../web3/hooks/useChainState' +import { isTwitter } from '../../../social-network-adaptor/twitter.com/base' const useStyles = makeStyles((theme) => createStyles({ @@ -108,19 +108,21 @@ export function AirdropClaimCard(props: AirdropClaimCardProps) { //#endregion //#region transaction dialog - const cashTag = getActivatedUI()?.networkIdentifier === 'twitter.com' ? '$' : '' + const cashTag = isTwitter(activatedSocialNetworkUI) ? '$' : '' const postLink = usePostLink() - const shareLink = useShareLink( - [ - `I just claimed ${cashTag}${token?.symbol} with ${ - new BigNumber(packet?.amount ?? '0') - .multipliedBy(checkState.type === CheckStateType.YEP ? checkState.ratio : 1) - .dp(0) - .toFixed() + '.00' - }. Follow @realMaskbook (mask.io) to claim airdrop.`, - postLink, - ].join('\n'), - ) + const shareLink = activatedSocialNetworkUI.utils + .getShareLinkURL?.( + [ + `I just claimed ${cashTag}${token?.symbol} with ${ + new BigNumber(packet?.amount ?? '0') + .multipliedBy(checkState.type === CheckStateType.YEP ? checkState.ratio : 1) + .dp(0) + .toFixed() + '.00' + }. Follow @realMaskbook (mask.io) to claim airdrop.`, + postLink, + ].join('\n'), + ) + .toString() // close the transaction dialog const [_, setTransactionDialogOpen] = useRemoteControlledDialog( diff --git a/packages/maskbook/src/plugins/COTM/README.md b/packages/maskbook/src/plugins/COTM/README.md deleted file mode 100644 index 6143636a7bc5..000000000000 --- a/packages/maskbook/src/plugins/COTM/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Plugin: CreativityOnTheMove - -## Feature Set - -- [x] View COTM packet - -## Prototype - -- diff --git a/packages/maskbook/src/plugins/COTM/UI/CompositionDialog.tsx b/packages/maskbook/src/plugins/COTM/UI/CompositionDialog.tsx deleted file mode 100644 index c20220b8fa96..000000000000 --- a/packages/maskbook/src/plugins/COTM/UI/CompositionDialog.tsx +++ /dev/null @@ -1,100 +0,0 @@ -import { useCallback, useState } from 'react' -import { Box, createStyles, DialogContent, DialogProps, FormControl, makeStyles, TextField } from '@material-ui/core' -import { pick } from 'lodash-es' -import { InjectedDialog } from '../../../components/shared/InjectedDialog' -import type { COTM_JSONPayload } from '../types' -import ActionButton from '../../../extension/options-page/DashboardComponents/ActionButton' -import { useChainId } from '../../../web3/hooks/useChainState' -import type { EthereumNetwork } from '../../../web3/types' -import { useAccount } from '../../../web3/hooks/useAccount' -import { resolveChainName } from '../../../web3/pipes' -import { useConstant } from '../../../web3/hooks/useConstant' -import { COTM_MetaKey, COTM_CONSTANTS } from '../constants' -import { getActivatedUI } from '../../../social-network/ui' -import { useERC721TokenDetailed } from '../../../web3/hooks/useERC721TokenDetailed' -import { useI18N } from '../../../utils/i18n-next-ui' - -const useStyles = makeStyles((theme) => - createStyles({ - control: { - width: '100%', - paddingBottom: theme.spacing(2), - }, - }), -) - -export interface COTM_CompositionDialogProps { - open: boolean - onClose: () => void - DialogProps?: Partial -} - -export function COTM_CompositionDialog(props: COTM_CompositionDialogProps) { - const { t } = useI18N() - const classes = useStyles() - - const account = useAccount() - const chainId = useChainId() - - // fetch the NTF token - const COTM_TOKEN_ADDRESS = useConstant(COTM_CONSTANTS, 'COTM_TOKEN_ADDRESS') - const { value: nftToken } = useERC721TokenDetailed(COTM_TOKEN_ADDRESS) - - // payload settings - const [name, setName] = useState('') - const [message, setMessage] = useState('') - - const onConfirm = useCallback(() => { - if (!nftToken) return - - // compose payload - const payload: COTM_JSONPayload = { - sender: { - address: account, - name, - message, - }, - creation_time: new Date().getTime(), - network: resolveChainName(chainId) as EthereumNetwork, - ntf_token: pick(nftToken, ['address', 'name', 'symbol']), - } - - // update the composition dialog - const ref = getActivatedUI().typedMessageMetadata - const next = new Map(ref.value.entries()) - payload ? next.set(COTM_MetaKey, payload) : next.delete(COTM_MetaKey) - ref.value = next - - // close the dialog - props.onClose() - }, [account, chainId, name, message, nftToken, props.onClose]) - - return ( - - - - setName(e.target.value)} variant="outlined" /> - - - setMessage(e.target.value)} - variant="outlined" - /> - - - - - {t('confirm')} - - - - - - ) -} diff --git a/packages/maskbook/src/plugins/COTM/UI/TokenAlbum.tsx b/packages/maskbook/src/plugins/COTM/UI/TokenAlbum.tsx deleted file mode 100644 index 1f1a90737a6c..000000000000 --- a/packages/maskbook/src/plugins/COTM/UI/TokenAlbum.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { createStyles, makeStyles } from '@material-ui/core' -import { useConstant } from '../../../web3/hooks/useConstant' -import { useERC721TokenDetailed } from '../../../web3/hooks/useERC721TokenDetailed' -import { COTM_CONSTANTS } from '../constants' -import { useAllTokensOfOwner } from '../hooks/useAllTokensOfOwner' -import { TokenCard } from './TokenCard' - -const useStyles = makeStyles((theme) => - createStyles({ - root: { - padding: theme.spacing(0, 3), - }, - content: { - margin: '0 auto', - display: 'flex', - flexFlow: 'row wrap', - justifyContent: 'flex-start', - scrollSnapAlign: 'center', - '&::after': { - content: '""', - flex: 'auto', - }, - }, - tile: { - padding: theme.spacing(1), - }, - }), -) - -export interface TokenAlbumProps {} - -export function TokenAlbum(props: TokenAlbumProps) { - const classes = useStyles(props) - - // fetch the NFT token - const COTM_TOKEN_ADDRESS = useConstant(COTM_CONSTANTS, 'COTM_TOKEN_ADDRESS') - const { value: COTM_Token } = useERC721TokenDetailed(COTM_TOKEN_ADDRESS) - const tokens = useAllTokensOfOwner(COTM_Token) - - if (!tokens.value.length) return null - return ( -
-
- {tokens.value.map((token) => ( -
- -
- ))} -
-
- ) -} diff --git a/packages/maskbook/src/plugins/COTM/UI/TokenCard.tsx b/packages/maskbook/src/plugins/COTM/UI/TokenCard.tsx deleted file mode 100644 index 07d4498a324b..000000000000 --- a/packages/maskbook/src/plugins/COTM/UI/TokenCard.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import Tilt from 'react-tilt' -import { Card, createStyles, Link, makeStyles } from '@material-ui/core' -import type { COTM_Token } from '../types' -import { resolveLinkOnEtherscan } from '../../../web3/pipes' -import { useChainId } from '../../../web3/hooks/useChainState' -import { useConstant } from '../../../web3/hooks/useConstant' -import { COTM_CONSTANTS } from '../constants' -import { Video } from '../../../components/shared/Video' - -const useStyles = makeStyles((theme) => - createStyles({ - root: { - borderRadius: 4, - position: 'relative', - backgroundColor: theme.palette.background.paper, - }, - content: {}, - identifier: { - color: theme.palette.common.white, - fontSize: 12, - borderRadius: 4, - display: 'block', - width: '100%', - textAlign: 'center', - backgroundColor: 'rgba(0, 0, 0, 0.3)', - left: 0, - bottom: 0, - position: 'absolute', - }, - }), -) - -export interface TokenCardProps { - token: COTM_Token - canViewOnEtherscan?: boolean -} - -export function TokenCard(props: TokenCardProps) { - const classes = useStyles(props) - const chainId = useChainId() - const COTM_TOKEN_ADDRESS = useConstant(COTM_CONSTANTS, 'COTM_TOKEN_ADDRESS') - - const CardComponent = ( - - - - - ) - return props.canViewOnEtherscan && props.token.tokenId ? ( - - {CardComponent} - - ) : ( - CardComponent - ) -} diff --git a/packages/maskbook/src/plugins/COTM/UI/TokenPacket.tsx b/packages/maskbook/src/plugins/COTM/UI/TokenPacket.tsx deleted file mode 100644 index fd35fb275b86..000000000000 --- a/packages/maskbook/src/plugins/COTM/UI/TokenPacket.tsx +++ /dev/null @@ -1,254 +0,0 @@ -import { useCallback, useEffect } from 'react' -import { Box, Card, CardContent, CardHeader, createStyles, Link, makeStyles, Typography } from '@material-ui/core' -import OpenInNewIcon from '@material-ui/icons/OpenInNew' -import classNames from 'classnames' -import LisaImage from '../assets/Lisa' -import { TokenCard } from './TokenCard' -import type { COTM_JSONPayload } from '../types' -import { useConstant } from '../../../web3/hooks/useConstant' -import { COTM_CONSTANTS } from '../constants' -import { useAccount } from '../../../web3/hooks/useAccount' -import { resolveChainId, resolveChainName, resolveTokenLinkOnEtherscan } from '../../../web3/pipes' -import { useRemoteControlledDialog } from '../../../utils/hooks/useRemoteControlledDialog' -import { TransactionStateType } from '../../../web3/hooks/useTransactionState' -import { WalletMessages } from '../../Wallet/messages' -import { useTokens } from '../hooks/useTokens' -import { useTokensOfOwner } from '../hooks/useTokensOfOwner' -import { useShareLink } from '../../../utils/hooks/useShareLink' -import { useAvailability } from '../hooks/useAvailability' -import { useERC721TokenDetailed } from '../../../web3/hooks/useERC721TokenDetailed' -import { useI18N } from '../../../utils/i18n-next-ui' -import { usePostLink } from '../../../components/DataSource/usePostInfo' -import { useChainId, useChainIdValid } from '../../../web3/hooks/useChainState' -import ActionButton from '../../../extension/options-page/DashboardComponents/ActionButton' -import { first } from 'lodash-es' -import { useMintFromServerCallback } from '../hooks/useMintFromServerCallback' -import { EthereumMessages } from '../../Ethereum/messages' - -const useStyles = makeStyles((theme) => - createStyles({ - root: { - userSelect: 'none', - backgroundImage: `url(${LisaImage})`, - position: 'relative', - }, - header: { - zIndex: 0, - position: 'relative', - padding: 0, - }, - content: { - zIndex: 1, - position: 'relative', - paddingBottom: `${theme.spacing(2)} !important`, - }, - footer: { - paddingTop: theme.spacing(2), - display: 'flex', - justifyContent: 'center', - }, - cards: { - scrollSnapAlign: 'center', - overflow: 'auto', - display: 'flex', - flexDirection: 'row', - marginTop: theme.spacing(3), - scrollbarWidth: 'none', - '&::-webkit-scrollbar': { - display: 'none', - }, - }, - notes: { - fontSize: 12, - fontWeight: 500, - width: '100%', - display: 'flex', - flexDirection: 'row', - justifyContent: 'space-between', - }, - title: { - fontSize: '24px !important', - textAlign: 'center', - }, - card: { - padding: theme.spacing(2, 1), - '&:first-child': { - paddingLeft: 0, - }, - '&:last-child': { - paddingRight: 0, - }, - }, - note: { - color: theme.palette.common.white, - fontSize: 'inherit', - textShadow: [ - '-1px 0 0 #c2130f', - '1px 0 0 #c2130f', - '0 -1px 0 #c2130f', - '0 1px 0 #c2130f', - '-1px -1px 0 #c2130f', - '1px -1px 0 #c2130f', - '-1px 1px 0 #c2130f', - '1px 1px 0 #c2130f', - ].join(','), - }, - link: { - color: theme.palette.common.white, - display: 'flex', - alignItems: 'center', - }, - }), -) - -export interface TokenPacketProps { - payload: COTM_JSONPayload -} - -export function TokenPacket(props: TokenPacketProps) { - const { payload } = props - - const { t } = useI18N() - const classes = useStyles() - - // fetch the NTF token - const COTM_TOKEN_ADDRESS = useConstant(COTM_CONSTANTS, 'COTM_TOKEN_ADDRESS') - const { value: COTM_Token } = useERC721TokenDetailed(COTM_TOKEN_ADDRESS) - - const { value: remaining, loading: loadingRemaining, retry: revalidateAvailability } = useAvailability() - const tokens = useTokens(COTM_Token) - const { value: tokensOfOwner, loading: loadingTokensOfOwner, retry: revalidateTokensOfOwner } = useTokensOfOwner( - COTM_Token, - ) - const prefaceToken = first(tokensOfOwner.length ? tokensOfOwner : tokens) - - // context - const account = useAccount() - const chainId = useChainId() - const chainIdValid = useChainIdValid() - - //#region mint - const [mintState, mintCallback, resetMintCallback] = useMintFromServerCallback(account) - //#endregion - - //#region remote controlled transaction dialog - const postLink = usePostLink() - const shareLink = useShareLink( - [ - `I just received a special NFT from @${payload.sender.name}. Follow @realmaskbook (mask.io) to get your first NFT on Twitter.`, - '#mask_io #twitternft', - postLink, - ].join('\n'), - ) - - // close the transaction dialog - const [_, setTransactionDialogOpen] = useRemoteControlledDialog( - EthereumMessages.events.transactionDialogUpdated, - (ev) => { - if (ev.open) return - - // reset state - resetMintCallback() - - if (mintState.type !== TransactionStateType.CONFIRMED) return - - // revalidate my tokens - revalidateAvailability() - revalidateTokensOfOwner() - }, - ) - - // open the transaction dialog - useEffect(() => { - if (mintState.type === TransactionStateType.UNKNOWN) return - setTransactionDialogOpen({ - open: true, - shareLink, - state: mintState, - summary: `Getting #CreativityOnTheMove NFT token.`, - }) - }, [mintState /* update tx dialog only if state changed */]) - //#endregion - - //#region remote controlled select provider dialog - const [, setSelectProviderDialogOpen] = useRemoteControlledDialog(WalletMessages.events.selectProviderDialogUpdated) - const onConnect = useCallback(() => { - setSelectProviderDialogOpen({ - open: true, - }) - }, [setSelectProviderDialogOpen]) - //#endregion - - // TODO: - // loading UI - if (!COTM_Token || !tokens.length) return null - if (loadingRemaining || loadingTokensOfOwner) return Loading the packet… - if (resolveChainId(payload.network) !== chainId) - return Not available on {resolveChainName(chainId)}. - return ( - <> - - - - - #CreativityOnTheMove - -
- {tokensOfOwner.length ? ( - - You've collected {tokensOfOwner.length} {COTM_Token.symbol}. - - ) : null} - {tokensOfOwner.length === 0 && tokens.length > 0 ? ( - - {remaining > 0 ? `Has been collected ${remaining}/${tokens.length}` : 'None Left'} - - ) : null} - - - - {COTM_Token.name}({COTM_Token.symbol}) - - - - -
-
- {prefaceToken ? ( -
- -
- ) : null} -
-
- From @{payload.sender.name || 'Unknown'} -
-
-
- - {!account ? ( - - {t('plugin_wallet_connect_a_wallet')} - - ) : remaining > 0 && tokensOfOwner.length === 0 ? ( - - {`Get #CreativityOnTheMove NFT`} - - ) : null} - - - ) -} diff --git a/packages/maskbook/src/plugins/COTM/assets/Lisa.ts b/packages/maskbook/src/plugins/COTM/assets/Lisa.ts deleted file mode 100644 index 72be9729ad8f..000000000000 --- a/packages/maskbook/src/plugins/COTM/assets/Lisa.ts +++ /dev/null @@ -1 +0,0 @@ -export default `data:image/png;base64,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` diff --git a/packages/maskbook/src/plugins/COTM/constants.ts b/packages/maskbook/src/plugins/COTM/constants.ts deleted file mode 100644 index bfef4258a10f..000000000000 --- a/packages/maskbook/src/plugins/COTM/constants.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { ChainId } from '../../web3/types' - -export const COTM_MetaKey = 'com.maskbook.COTM:1' -export const COTM_PluginID = 'com.maskbook.COTM' - -export const COTM_CONSTANTS = { - COTM_TOKEN_ADDRESS: { - [ChainId.Mainnet]: '0x15fd3b2b6d61dd72df3c68639f6159ea2ebee41c', - [ChainId.Ropsten]: '', - [ChainId.Rinkeby]: '0x73945b47a02a77a6b2ae86a023d1106ce3f01fa0', - [ChainId.Kovan]: '', - [ChainId.Gorli]: '', - }, -} - -// the total NFT token count for #CreativityOnTheMove season -export const MAX_TOKEN_COUNT = 20 diff --git a/packages/maskbook/src/plugins/COTM/contracts/useCOTM_TokenContract.ts b/packages/maskbook/src/plugins/COTM/contracts/useCOTM_TokenContract.ts deleted file mode 100644 index 7438beb0bfca..000000000000 --- a/packages/maskbook/src/plugins/COTM/contracts/useCOTM_TokenContract.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { AbiItem } from 'web3-utils' -import COTM_TokenABI from '@dimensiondev/contracts/abis/COTM_Token.json' -import type { COTMToken as COTM_Token } from '@dimensiondev/contracts/types/COTM_Token' -import { useConstant } from '../../../web3/hooks/useConstant' -import { useContract } from '../../../web3/hooks/useContract' -import { COTM_CONSTANTS } from '../constants' - -export function useCOTM_TokenContract() { - const address = useConstant(COTM_CONSTANTS, 'COTM_TOKEN_ADDRESS') - return useContract(address, COTM_TokenABI as AbiItem[]) -} diff --git a/packages/maskbook/src/plugins/COTM/define.tsx b/packages/maskbook/src/plugins/COTM/define.tsx deleted file mode 100644 index 32090a421599..000000000000 --- a/packages/maskbook/src/plugins/COTM/define.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { SnackbarContent } from '@material-ui/core' -import { Suspense } from 'react' -import MaskbookPluginWrapper from '../MaskbookPluginWrapper' -import { COTM_MetaKey, COTM_PluginID } from './constants' -import { COTM_MetadataReader } from './helpers' -import type { COTM_JSONPayload } from './types' -import { createCompositionDialog } from '../utils/createCompositionDialog' -import { TokenPacket } from './UI/TokenPacket' -import { COTM_CompositionDialog } from './UI/CompositionDialog' -import { Flags } from '../../utils/flags' -import { PluginConfig, PluginScope, PluginStage } from '../types' - -const [COTM_CompositionEntry, COTM_CompositionUI] = createCompositionDialog('🇳🇱 #CreativityOnTheMove', (props) => ( - -)) - -export const COTM_PluginDefine: PluginConfig = { - pluginName: 'COTM', - identifier: COTM_PluginID, - stage: PluginStage.Production, - scope: PluginScope.Public, - successDecryptionInspector: function Comp(props) { - const payload = COTM_MetadataReader(props.message.meta) - if (!payload.ok) return null - return ( - - }> - - - - ) - }, - postDialogMetadataBadge: new Map([ - [ - COTM_MetaKey, - (payload: COTM_JSONPayload) => { - return '#CreativityOnTheMove - Strange Design' - }, - ], - ]), - PageComponent: Flags.COTM_composition_dialog_enabled ? COTM_CompositionUI : undefined, - postDialogEntries: Flags.COTM_composition_dialog_enabled ? [COTM_CompositionEntry] : undefined, -} diff --git a/packages/maskbook/src/plugins/COTM/helpers.ts b/packages/maskbook/src/plugins/COTM/helpers.ts deleted file mode 100644 index d28e6a5d9dbd..000000000000 --- a/packages/maskbook/src/plugins/COTM/helpers.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { createTypedMessageMetadataReader, createRenderWithMetadata } from '../../protocols/typed-message/metadata' -import { COTM_MetaKey } from './constants' -import type { COTM_JSONPayload } from './types' -import schema from './schema.json' - -export const COTM_MetadataReader = createTypedMessageMetadataReader(COTM_MetaKey, schema) -export const renderWithCOTM_Metadata = createRenderWithMetadata(COTM_MetadataReader) diff --git a/packages/maskbook/src/plugins/COTM/hooks/useAllTokensOfOwner.ts b/packages/maskbook/src/plugins/COTM/hooks/useAllTokensOfOwner.ts deleted file mode 100644 index aa8132f0310c..000000000000 --- a/packages/maskbook/src/plugins/COTM/hooks/useAllTokensOfOwner.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { useERC721TokenIdsOfOwner } from '../../../web3/hooks/useERC721TokensOfOwner' -import type { ERC721TokenDetailed } from '../../../web3/types' - -export function useAllTokensOfOwner(token?: ERC721TokenDetailed) { - const { value: tokenIds, ...result } = useERC721TokenIdsOfOwner(token) - return { - ...result, - value: tokenIds.filter(Boolean).map((tokenId) => ({ - tokenId: tokenId ?? '', - tokenImageURL: tokenId ? `${token?.baseURI}${tokenId}.mp4` : '', - })), - } -} diff --git a/packages/maskbook/src/plugins/COTM/hooks/useAvailability.ts b/packages/maskbook/src/plugins/COTM/hooks/useAvailability.ts deleted file mode 100644 index b70ccd6e108f..000000000000 --- a/packages/maskbook/src/plugins/COTM/hooks/useAvailability.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { useAsyncRetry } from 'react-use' -import { useCOTM_TokenContract } from '../contracts/useCOTM_TokenContract' - -export function useAvailability() { - const COTM_TokenContract = useCOTM_TokenContract() - const { value, ...result } = useAsyncRetry(async () => { - if (!COTM_TokenContract) return null - return COTM_TokenContract.methods.check_availability().call() - }, []) - return { - value: Number.parseInt(value ?? '0', 10), - ...result, - } -} diff --git a/packages/maskbook/src/plugins/COTM/hooks/useMintCallback.ts b/packages/maskbook/src/plugins/COTM/hooks/useMintCallback.ts deleted file mode 100644 index d43d75b5cd6c..000000000000 --- a/packages/maskbook/src/plugins/COTM/hooks/useMintCallback.ts +++ /dev/null @@ -1,87 +0,0 @@ -import BigNumber from 'bignumber.js' -import { useCallback } from 'react' -import type { Tx } from '@dimensiondev/contracts/types/types' -import { addGasMargin } from '../../../web3/helpers' -import { TransactionStateType, useTransactionState } from '../../../web3/hooks/useTransactionState' -import { useCOTM_TokenContract } from '../contracts/useCOTM_TokenContract' - -export function useMintCallback(from: string) { - const [mintState, setMintState] = useTransactionState() - const COTM_TokenContract = useCOTM_TokenContract() - - const mintCallback = useCallback(async () => { - if (!COTM_TokenContract) { - setMintState({ - type: TransactionStateType.UNKNOWN, - }) - return - } - - // pre-step: start waiting for provider to confirm tx - setMintState({ - type: TransactionStateType.WAIT_FOR_CONFIRMING, - }) - - // step 1: check remaining - const remaining = await COTM_TokenContract.methods.check_availability().call() - if (Number.parseInt(remaining || '0', 10) <= 0) { - setMintState({ - type: TransactionStateType.FAILED, - error: new Error('There is none NTF token left.'), - }) - return - } - - // step 2-1: estimatedGas - const config: Tx = { - from, - to: COTM_TokenContract.options.address, - } - const estimatedGas = await COTM_TokenContract.methods - .mintToken(from) - .estimateGas(config) - .catch((error) => { - setMintState({ - type: TransactionStateType.FAILED, - error, - }) - throw error - }) - - // step 2-2: blocking - return new Promise((resolve, reject) => { - const onSucceed = (hash: string) => { - setMintState({ - type: TransactionStateType.HASH, - hash, - }) - resolve(hash) - } - const onFailed = (error: Error) => { - setMintState({ - type: TransactionStateType.FAILED, - error, - }) - reject(error) - } - COTM_TokenContract.methods.mintToken(from).send( - { - gas: addGasMargin(new BigNumber(estimatedGas)).toFixed(), - ...config, - }, - async (error, hash) => { - if (hash) onSucceed(hash) - else if (error) onFailed(error) - }, - ) - }) - }, [from, COTM_TokenContract]) - - const resetCallback = useCallback(() => { - setMintState({ - type: TransactionStateType.UNKNOWN, - }) - }, []) - - return [mintState, mintCallback, resetCallback] as const -} diff --git a/packages/maskbook/src/plugins/COTM/hooks/useMintFromServerCallback.ts b/packages/maskbook/src/plugins/COTM/hooks/useMintFromServerCallback.ts deleted file mode 100644 index c12aa90ff487..000000000000 --- a/packages/maskbook/src/plugins/COTM/hooks/useMintFromServerCallback.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { useCallback, useEffect, useState } from 'react' -import { useTransactionReceipt } from '../../../web3/hooks/useTransaction' -import { TransactionStateType, useTransactionState } from '../../../web3/hooks/useTransactionState' -import { useCOTM_TokenContract } from '../contracts/useCOTM_TokenContract' -import { PluginCOTM } from '../messages' - -export function useMintFromServerCallback(from: string) { - const [txHash, setTxHash] = useState('') - const [mintState, setMintState] = useTransactionState() - const COTM_TokenContract = useCOTM_TokenContract() - - const mintCallback = useCallback(async () => { - if (!COTM_TokenContract) { - setMintState({ - type: TransactionStateType.UNKNOWN, - }) - return - } - - // pre-step: start waiting for provider to confirm tx - setMintState({ - type: TransactionStateType.WAIT_FOR_CONFIRMING, - }) - - // step 1: check remaining - const remaining = await COTM_TokenContract.methods.check_availability().call() - if (Number.parseInt(remaining || '0', 10) <= 0) { - setMintState({ - type: TransactionStateType.FAILED, - error: new Error('There is none NTF token left.'), - }) - return - } - - // step 2: mint by server - try { - const { mint_transaction_hash } = await PluginCOTM.mintCOTM_Token(from) - setTxHash(mint_transaction_hash) - } catch (error) { - setMintState({ - type: TransactionStateType.FAILED, - error, - }) - } - }, [from, COTM_TokenContract]) - - const resetCallback = useCallback(() => { - setMintState({ - type: TransactionStateType.UNKNOWN, - }) - }, []) - - //#region tracking receipt - const receipt = useTransactionReceipt(txHash) - - useEffect(() => { - if (!receipt) return - if (receipt.status) - setMintState({ - type: TransactionStateType.CONFIRMED, - no: 0, - receipt, - }) - else - setMintState({ - type: TransactionStateType.FAILED, - error: new Error('The contract execution was not successful, check your transaction.'), - }) - }, [receipt]) - //#endregion - - return [mintState, mintCallback, resetCallback] as const -} diff --git a/packages/maskbook/src/plugins/COTM/hooks/useTokens.ts b/packages/maskbook/src/plugins/COTM/hooks/useTokens.ts deleted file mode 100644 index 923f748edda3..000000000000 --- a/packages/maskbook/src/plugins/COTM/hooks/useTokens.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { hexToNumberString, soliditySha3 } from 'web3-utils' -import type { COTM_Token } from '../types' -import type { ERC721TokenDetailed } from '../../../web3/types' -import { MAX_TOKEN_COUNT } from '../constants' - -export function useTokens(token?: ERC721TokenDetailed): COTM_Token[] { - if (!token) return [] - return new Array(MAX_TOKEN_COUNT).fill(0).map((_, idx) => { - const tokenId_ = soliditySha3({ t: 'uint8', v: idx }) - const tokenId = tokenId_ ? hexToNumberString(tokenId_) : '' - return { - tokenId, - tokenImageURL: tokenId ? `${token.baseURI}${tokenId}.mp4` : '', - } - }) -} diff --git a/packages/maskbook/src/plugins/COTM/hooks/useTokensOfOwner.ts b/packages/maskbook/src/plugins/COTM/hooks/useTokensOfOwner.ts deleted file mode 100644 index 0988e563e9ba..000000000000 --- a/packages/maskbook/src/plugins/COTM/hooks/useTokensOfOwner.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { useERC721TokenIdsOfOwner } from '../../../web3/hooks/useERC721TokensOfOwner' -import type { ERC721TokenDetailed } from '../../../web3/types' -import { useTokens } from './useTokens' - -export function useTokensOfOwner(token?: ERC721TokenDetailed) { - const { value: tokenIds, ...result } = useERC721TokenIdsOfOwner(token) - const totalTokens = useTokens(token) - - if (!token || !totalTokens.length) - return { - ...result, - value: [], - } - return { - ...result, - value: totalTokens.filter((x) => tokenIds.includes(x.tokenId)), - } -} diff --git a/packages/maskbook/src/plugins/COTM/messages.ts b/packages/maskbook/src/plugins/COTM/messages.ts deleted file mode 100644 index ffc60568d7ad..000000000000 --- a/packages/maskbook/src/plugins/COTM/messages.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { createPluginMessage } from '../utils/createPluginMessage' -import { createPluginRPC } from '../utils/createPluginRPC' -import { COTM_PluginID } from './constants' - -if (module.hot) module.hot.accept() -const COTM_Message = createPluginMessage<{ _: unknown }>(COTM_PluginID) -export const PluginCOTM = createPluginRPC(COTM_PluginID, () => import('./services'), COTM_Message.events._) diff --git a/packages/maskbook/src/plugins/COTM/schema.json b/packages/maskbook/src/plugins/COTM/schema.json deleted file mode 100644 index 729ed8b6df66..000000000000 --- a/packages/maskbook/src/plugins/COTM/schema.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "type": "object", - "additionalProperties": true, - "properties": { - "sender": { - "type": "object", - "additionalProperties": true, - "properties": { - "address": { - "type": "string", - "title": "address" - }, - "name": { - "type": "string", - "title": "name" - }, - "message": { - "type": "string", - "title": "message" - } - }, - "required": ["address", "message", "name"], - "title": "sender" - }, - "nft_token": { - "type": "object", - "additionalProperties": true, - "properties": { - "address": { - "description": "token address", - "type": "string", - "title": "address" - }, - "name": { - "description": "token name", - "type": "string", - "title": "name" - }, - "symbol": { - "description": "token symbol", - "type": "string", - "title": "symbol" - } - }, - "required": ["address", "name", "symbol"], - "title": "token" - }, - "creation_time": { - "type": "number", - "title": "creation_time" - }, - "network": { - "enum": ["Mainnet", "Rinkeby", "Ropsten"], - "type": "string", - "title": "network" - } - }, - "required": ["sender", "creation_time", "network"] -} diff --git a/packages/maskbook/src/plugins/COTM/services.ts b/packages/maskbook/src/plugins/COTM/services.ts deleted file mode 100644 index 455029944913..000000000000 --- a/packages/maskbook/src/plugins/COTM/services.ts +++ /dev/null @@ -1,32 +0,0 @@ -import * as jwt from 'jsonwebtoken' -import { sha3 } from 'web3-utils' -import Services from '../../extension/service' -import { resolveChainName } from '../../web3/pipes' - -export async function mintCOTM_Token(from: string): Promise<{ mint_transaction_hash: string }> { - const host = 'https://redpacket.gives' - const x = 'a3323cd1-fa42-44cd-b053-e474365ab3da' - - const chainId = await Services.Ethereum.getChainId(from) - const network = resolveChainName(chainId).toLowerCase() - - // skip hi - const auth = await fetch(`${host}/hi?id=${from}&network=${network}`) - if (!auth.ok) throw new Error('Auth failed') - - const verify = await auth.text() - const jwt_encoded: { - recipient: string - validation: string - signature: string - } = { - recipient: from, - validation: sha3(from)!, - signature: await Services.Ethereum.sign(verify, from, chainId), - } - const mintResponse = await fetch( - `${host}/netherlands?payload=${jwt.sign(jwt_encoded, x, { algorithm: 'HS256' })}&network=${network}`, - ) - if (!mintResponse.ok) throw new Error('Claim failed') - return { mint_transaction_hash: await mintResponse.text() } -} diff --git a/packages/maskbook/src/plugins/COTM/types.ts b/packages/maskbook/src/plugins/COTM/types.ts deleted file mode 100644 index 6a2ae316fd34..000000000000 --- a/packages/maskbook/src/plugins/COTM/types.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { EthereumNetwork } from '../../web3/types' - -export interface COTM_Token { - tokenId: string // sha3(hollandchina + id) - tokenImageURL: string -} - -export interface COTM_JSONPayload { - sender: { - address: string - name: string - message: string - } - ntf_token: { - address: string - name: string - symbol: string - } - creation_time: number - network: EthereumNetwork -} diff --git a/packages/maskbook/src/plugins/Election2020/README.md b/packages/maskbook/src/plugins/Election2020/README.md deleted file mode 100644 index 038f1e87e5d6..000000000000 --- a/packages/maskbook/src/plugins/Election2020/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Plugin: Election 2020 - -## Feature Set - -- [x] View election packet - -## Prototype - -- diff --git a/packages/maskbook/src/plugins/Election2020/UI/ElectionCard.tsx b/packages/maskbook/src/plugins/Election2020/UI/ElectionCard.tsx deleted file mode 100644 index 9c7a6ef6ccac..000000000000 --- a/packages/maskbook/src/plugins/Election2020/UI/ElectionCard.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import Tilt from 'react-tilt' -import { Card, createStyles, Link, makeStyles } from '@material-ui/core' -import type { ElectionToken } from '../types' -import { Image } from '../../../components/shared/Image' -import { resolveLinkOnEtherscan } from '../../../web3/pipes' -import { useChainId } from '../../../web3/hooks/useChainState' -import { useConstant } from '../../../web3/hooks/useConstant' -import { ELECTION_2020_CONSTANTS } from '../constants' - -const useStyles = makeStyles((theme) => - createStyles({ - root: { - borderRadius: 4, - position: 'relative', - backgroundColor: theme.palette.background.paper, - }, - content: {}, - identifier: { - color: theme.palette.common.white, - fontSize: 12, - borderRadius: 4, - display: 'block', - width: '100%', - textAlign: 'center', - backgroundColor: 'rgba(0, 0, 0, 0.3)', - left: 0, - bottom: 0, - position: 'absolute', - }, - }), -) - -export interface ElectionCardProps { - token: ElectionToken - canViewOnEtherscan?: boolean -} - -export function ElectionCard(props: ElectionCardProps) { - const classes = useStyles(props) - const chainId = useChainId() - const ELECTION_TOKEN_ADDRESS = useConstant(ELECTION_2020_CONSTANTS, 'ELECTION_TOKEN_ADDRESS') - - const CardComponent = ( - - - - - - ) - return props.canViewOnEtherscan && props.token.tokenId ? ( - - {CardComponent} - - ) : ( - CardComponent - ) -} diff --git a/packages/maskbook/src/plugins/Election2020/UI/ElectionCompositionDialog.tsx b/packages/maskbook/src/plugins/Election2020/UI/ElectionCompositionDialog.tsx deleted file mode 100644 index c8399cf97e03..000000000000 --- a/packages/maskbook/src/plugins/Election2020/UI/ElectionCompositionDialog.tsx +++ /dev/null @@ -1,153 +0,0 @@ -import { useCallback, useState } from 'react' -import { - Box, - createStyles, - DialogContent, - DialogProps, - FormControl, - InputLabel, - makeStyles, - MenuItem, - Select, - TextField, -} from '@material-ui/core' -import { pick } from 'lodash-es' -import { InjectedDialog } from '../../../components/shared/InjectedDialog' -import { CANDIDATE_TYPE, US_STATE_TYPE, Election2020JSONPayload } from '../types' -import { getEnumAsArray } from '../../../utils/enum' -import { PortalShadowRoot } from '../../../utils/shadow-root/ShadowRootPortal' -import ActionButton from '../../../extension/options-page/DashboardComponents/ActionButton' -import { useChainId } from '../../../web3/hooks/useChainState' -import type { EthereumNetwork } from '../../../web3/types' -import { useAccount } from '../../../web3/hooks/useAccount' -import { resolveChainName } from '../../../web3/pipes' -import { useConstant } from '../../../web3/hooks/useConstant' -import { Election2020MetaKey, ELECTION_2020_CONSTANTS } from '../constants' -import { getActivatedUI } from '../../../social-network/ui' -import { resolveStateName } from '../pipes' -import { useERC721TokenDetailed } from '../../../web3/hooks/useERC721TokenDetailed' -import { useI18N } from '../../../utils/i18n-next-ui' - -const useStyles = makeStyles((theme) => - createStyles({ - control: { - width: '100%', - paddingBottom: theme.spacing(2), - }, - }), -) - -export interface ElectionCompositionDialogProps { - open: boolean - onClose: () => void - DialogProps?: Partial -} - -export function ElectionCompositionDialog(props: ElectionCompositionDialogProps) { - const { t } = useI18N() - const classes = useStyles() - - const account = useAccount() - const chainId = useChainId() - - // fetch the NTF token - const ELECTION_TOKEN_ADDRESS = useConstant(ELECTION_2020_CONSTANTS, 'ELECTION_TOKEN_ADDRESS') - const { value: nftToken } = useERC721TokenDetailed(ELECTION_TOKEN_ADDRESS) - - // payload settings - const [name, setName] = useState('') - const [message, setMessage] = useState('') - const [state, setState] = useState(US_STATE_TYPE.AK) - const [candidate, setCandidate] = useState(CANDIDATE_TYPE.TRUMP) - - const onConfirm = useCallback(() => { - if (!nftToken) return - - // compose payload - const payload: Election2020JSONPayload = { - state, - winner: candidate, - sender: { - address: account, - name, - message, - }, - creation_time: new Date().getTime(), - network: resolveChainName(chainId) as EthereumNetwork, - ntf_token: pick(nftToken, ['address', 'name', 'symbol']), - } - - // update the composition dialog - const ref = getActivatedUI().typedMessageMetadata - const next = new Map(ref.value.entries()) - payload ? next.set(Election2020MetaKey, payload) : next.delete(Election2020MetaKey) - ref.value = next - - // close the dialog - props.onClose() - }, [account, chainId, name, message, state, candidate, nftToken, props.onClose]) - - return ( - - - - Winner - - - - State - - - - setName(e.target.value)} - variant="outlined" - /> - - - setMessage(e.target.value)} - variant="outlined" - /> - - - - - {t('confirm')} - - - - - - ) -} diff --git a/packages/maskbook/src/plugins/Election2020/UI/ElectionPacket.tsx b/packages/maskbook/src/plugins/Election2020/UI/ElectionPacket.tsx deleted file mode 100644 index 94f77620b963..000000000000 --- a/packages/maskbook/src/plugins/Election2020/UI/ElectionPacket.tsx +++ /dev/null @@ -1,310 +0,0 @@ -import { useCallback, useEffect } from 'react' -import { Box, Card, CardContent, CardHeader, createStyles, Link, makeStyles, Typography } from '@material-ui/core' -import OpenInNewIcon from '@material-ui/icons/OpenInNew' -import classNames from 'classnames' -import { ElectionCard } from './ElectionCard' -import type { Election2020JSONPayload } from '../types' -import { useConstant } from '../../../web3/hooks/useConstant' -import { ELECTION_2020_CONSTANTS } from '../constants' -import { resolveCandidateName, resolveCandidateBriefName, resolveStateName } from '../pipes' -import { useAccount } from '../../../web3/hooks/useAccount' -import { resolveChainId, resolveChainName, resolveTokenLinkOnEtherscan } from '../../../web3/pipes' -import { useMintCallback } from '../hooks/useMintCallback' -import { useRemoteControlledDialog } from '../../../utils/hooks/useRemoteControlledDialog' -import { TransactionStateType } from '../../../web3/hooks/useTransactionState' -import { WalletMessages } from '../../Wallet/messages' -import { useElectionTokens } from '../hooks/useElectionTokens' -import { useElectionTokensOfOwner } from '../hooks/useElectionTokensOfOwner' -import { useShareLink } from '../../../utils/hooks/useShareLink' -import { useAvailability } from '../hooks/useAvailability' -import { useERC721TokenDetailed } from '../../../web3/hooks/useERC721TokenDetailed' -import { useI18N } from '../../../utils/i18n-next-ui' -import { usePostLink } from '../../../components/DataSource/usePostInfo' -import { useChainId, useChainIdValid } from '../../../web3/hooks/useChainState' -import ActionButton from '../../../extension/options-page/DashboardComponents/ActionButton' -import { getAssetAsBlobURL } from '../../../utils/suspends/getAssetAsBlobURL' -import type { CSSProperties } from '@material-ui/core/styles/withStyles' -import { EthereumMessages } from '../../Ethereum/messages' - -const useStyles = makeStyles((theme) => - createStyles({ - root: { - userSelect: 'none', - backgroundImage: 'linear-gradient(180deg, #121d76 0%, #2c39b9 100%)', - position: 'relative', - - '&::before, &::after': { - content: '""', - width: '90%', - height: 260, - backgroundImage: 'var(--flag-image)', - backgroundSize: 'contain', - backgroundRepeat: 'no-repeat', - - bottom: '-21%', - position: 'absolute', - zIndex: 0, - }, - '&::before': { - left: '-12%', - }, - '&::after': { - right: '-12%', - transform: 'scaleX(-1)', - }, - }, - header: { - zIndex: 0, - position: 'relative', - padding: 0, - '&::before': { - content: '""', - width: '100%', - height: 260, - backgroundImage: 'var(--fireworks-image)', - backgroundSize: 'contain', - backgroundRepeat: 'no-repeat', - top: 0, - left: 0, - position: 'absolute', - zIndex: 0, - }, - }, - content: { - zIndex: 1, - position: 'relative', - paddingBottom: `${theme.spacing(2)} !important`, - }, - footer: { - paddingTop: theme.spacing(2), - display: 'flex', - justifyContent: 'center', - }, - cards: { - scrollSnapAlign: 'center', - overflow: 'auto', - display: 'flex', - flexDirection: 'row', - marginTop: theme.spacing(3), - scrollbarWidth: 'none', - '&::-webkit-scrollbar': { - display: 'none', - }, - }, - notes: { - fontSize: 12, - fontWeight: 500, - width: '100%', - display: 'flex', - flexDirection: 'row', - justifyContent: 'space-between', - }, - title: { - fontSize: '24px !important', - textAlign: 'center', - }, - card: { - padding: theme.spacing(2, 1), - '&:first-child': { - paddingLeft: 0, - }, - '&:last-child': { - paddingRight: 0, - }, - }, - note: { - color: theme.palette.common.white, - fontSize: 'inherit', - textShadow: [ - '-1px 0 0 #121d76', - '1px 0 0 #121d76', - '0 -1px 0 #121d76', - '0 1px 0 #121d76', - '-1px -1px 0 #121d76', - '1px -1px 0 #121d76', - '-1px 1px 0 #121d76', - '1px 1px 0 #121d76', - ].join(','), - }, - link: { - color: theme.palette.common.white, - display: 'flex', - alignItems: 'center', - }, - }), -) - -export interface ElectionPacketProps { - payload: Election2020JSONPayload -} - -export function ElectionPacket(props: ElectionPacketProps) { - // fetch images - const FireworksImage = getAssetAsBlobURL(new URL('../assets/fireworks.jpg', import.meta.url)) - const FlagImage = getAssetAsBlobURL(new URL('../assets/flag.jpg', import.meta.url)) - - const { payload } = props - - const { t } = useI18N() - const classes = useStyles() - - // fetch the NTF token - const ELECTION_TOKEN_ADDRESS = useConstant(ELECTION_2020_CONSTANTS, 'ELECTION_TOKEN_ADDRESS') - const { value: electionToken } = useERC721TokenDetailed(ELECTION_TOKEN_ADDRESS) - - const { value: remaining, loading: loadingRemaining, retry: revalidateAvailability } = useAvailability( - payload.state, - ) - const tokens = useElectionTokens(payload.state, electionToken) - const { - value: tokensOfOwner, - loading: loadingTokensOfOwner, - retry: revalidateTokensOfOwner, - } = useElectionTokensOfOwner(payload.state, electionToken) - - // context - const account = useAccount() - const chainId = useChainId() - const chainIdValid = useChainIdValid() - - //#region mint - const [mintState, mintCallback, resetMintCallback] = useMintCallback(account, payload.state, payload.winner) - //#endregion - - //#region remote controlled transaction dialog - const postLink = usePostLink() - const shareLink = useShareLink( - [ - `I just received an election special ${resolveCandidateBriefName(payload.winner)} NFT from @${ - payload.sender.name - }. Follow @realmaskbook (mask.io) to get your first NFT on Twitter.`, - '#mask_io #twitternft', - postLink, - ].join('\n'), - ) - - // close the transaction dialog - const [_, setTransactionDialogOpen] = useRemoteControlledDialog( - EthereumMessages.events.transactionDialogUpdated, - (ev) => { - if (ev.open) return - - // reset state - resetMintCallback() - - if (mintState.type !== TransactionStateType.CONFIRMED) return - - // revalidate my tokens - revalidateAvailability() - revalidateTokensOfOwner() - }, - ) - - // open the transaction dialog - useEffect(() => { - if (mintState.type === TransactionStateType.UNKNOWN) return - setTransactionDialogOpen({ - open: true, - shareLink, - state: mintState, - summary: `Getting ${resolveCandidateName(payload.winner)} wins NFT token.`, - }) - }, [mintState /* update tx dialog only if state changed */]) - //#endregion - - //#region remote controlled select provider dialog - const [, setSelectProviderDialogOpen] = useRemoteControlledDialog(WalletMessages.events.selectProviderDialogUpdated) - const onConnect = useCallback(() => { - setSelectProviderDialogOpen({ - open: true, - }) - }, [setSelectProviderDialogOpen]) - //#endregion - - // TODO: - // loading UI - if (!electionToken || !tokens.length) return null - if (loadingRemaining || loadingTokensOfOwner) - return Loading the election result of {resolveStateName(payload.state)}… - if (resolveChainId(payload.network) !== chainId) - return Not available on {resolveChainName(chainId)}. - return ( - <> - - - - - 2020 Presidential Election - -
- {tokensOfOwner.length ? ( - - You've collected {tokensOfOwner.length} {electionToken.symbol}. - - ) : null} - {tokensOfOwner.length === 0 && tokens.length > 0 ? ( - - {remaining > 0 ? `Has been collected ${remaining}/${tokens.length}` : 'None Left'} - - ) : null} - - - - {electionToken.name}({electionToken.symbol}) - - - - -
-
- {(tokensOfOwner.length ? tokensOfOwner : tokens).map((x, i) => ( -
- -
- ))} -
-
- From @{payload.sender.name || 'Unknown'} -
-
-
- - {!account ? ( - - {t('plugin_wallet_connect_a_wallet')} - - ) : !chainIdValid ? ( - - {t('plugin_wallet_invalid_network')} - - ) : remaining > 0 && tokensOfOwner.length === 0 ? ( - - {`Get ${resolveCandidateName(payload.winner)} wins NFT`} - - ) : null} - - - ) -} diff --git a/packages/maskbook/src/plugins/Election2020/UI/ElectionPacketsInspector.tsx b/packages/maskbook/src/plugins/Election2020/UI/ElectionPacketsInspector.tsx deleted file mode 100644 index d433312e7b74..000000000000 --- a/packages/maskbook/src/plugins/Election2020/UI/ElectionPacketsInspector.tsx +++ /dev/null @@ -1,5 +0,0 @@ -export interface ElectionPacketsInspectorProps {} - -export function ElectionPacketsInspector(props: ElectionPacketsInspectorProps) { - return null -} diff --git a/packages/maskbook/src/plugins/Election2020/UI/ElectionTokenAlbum.tsx b/packages/maskbook/src/plugins/Election2020/UI/ElectionTokenAlbum.tsx deleted file mode 100644 index 6d9ab39cb0dd..000000000000 --- a/packages/maskbook/src/plugins/Election2020/UI/ElectionTokenAlbum.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import { createStyles, makeStyles } from '@material-ui/core' -import { useChainIdValid } from '../../../web3/hooks/useChainState' -import { useConstant } from '../../../web3/hooks/useConstant' -import { useERC721TokenDetailed } from '../../../web3/hooks/useERC721TokenDetailed' -import { ELECTION_2020_CONSTANTS } from '../constants' -import { useAllElectionTokensOfOwner } from '../hooks/useAllElectionTokensOfOwner' -import { ElectionCard } from './ElectionCard' - -const useStyles = makeStyles((theme) => - createStyles({ - root: { - padding: theme.spacing(0, 3), - }, - content: { - margin: '0 auto', - display: 'flex', - flexFlow: 'row wrap', - justifyContent: 'flex-start', - scrollSnapAlign: 'center', - '&::after': { - content: '""', - flex: 'auto', - }, - }, - tile: { - padding: theme.spacing(1), - }, - }), -) - -export interface ElectionTokenAlbumProps {} - -export function ElectionTokenAlbum(props: ElectionTokenAlbumProps) { - const classes = useStyles(props) - - // fetch the NFT token - const ELECTION_TOKEN_ADDRESS = useConstant(ELECTION_2020_CONSTANTS, 'ELECTION_TOKEN_ADDRESS') - const { value: electionToken } = useERC721TokenDetailed(ELECTION_TOKEN_ADDRESS) - const tokens = useAllElectionTokensOfOwner(electionToken) - - const chainIdValid = useChainIdValid() - if (!chainIdValid) return null - if (!tokens.value.length) return null - return ( -
-
- {tokens.value.map((token) => ( -
- -
- ))} -
-
- ) -} diff --git a/packages/maskbook/src/plugins/Election2020/assets/fireworks.jpg b/packages/maskbook/src/plugins/Election2020/assets/fireworks.jpg deleted file mode 100644 index 8bbcfb1b012d..000000000000 Binary files a/packages/maskbook/src/plugins/Election2020/assets/fireworks.jpg and /dev/null differ diff --git a/packages/maskbook/src/plugins/Election2020/assets/flag.jpg b/packages/maskbook/src/plugins/Election2020/assets/flag.jpg deleted file mode 100644 index 301a1a18fe09..000000000000 Binary files a/packages/maskbook/src/plugins/Election2020/assets/flag.jpg and /dev/null differ diff --git a/packages/maskbook/src/plugins/Election2020/constants.ts b/packages/maskbook/src/plugins/Election2020/constants.ts deleted file mode 100644 index f6c4528e2193..000000000000 --- a/packages/maskbook/src/plugins/Election2020/constants.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { ChainId } from '../../web3/types' - -export const Election2020MetaKey = 'com.maskbook.election2020:1' -export const Election2020PluginID = 'com.maskbook.election2020' - -export const ELECTION_2020_CONSTANTS = { - ELECTION_TOKEN_ADDRESS: { - [ChainId.Mainnet]: '0x797ce6d5a2e4ba7ed007b01a42f797a050a3cbd8', - [ChainId.Ropsten]: '', - [ChainId.Rinkeby]: '0xdb52de365ad57bf54272e2ea37bb8651b44bb397', - [ChainId.Kovan]: '', - [ChainId.Gorli]: '', - }, -} diff --git a/packages/maskbook/src/plugins/Election2020/contracts/useElectionTokenContract.ts b/packages/maskbook/src/plugins/Election2020/contracts/useElectionTokenContract.ts deleted file mode 100644 index 74f62987a35e..000000000000 --- a/packages/maskbook/src/plugins/Election2020/contracts/useElectionTokenContract.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { AbiItem } from 'web3-utils' -import ElectionTokenABI from '@dimensiondev/contracts/abis/ElectionToken.json' -import type { ElectionToken } from '@dimensiondev/contracts/types/ElectionToken' -import { useConstant } from '../../../web3/hooks/useConstant' -import { useContract } from '../../../web3/hooks/useContract' -import { ELECTION_2020_CONSTANTS } from '../constants' - -export function useElectionTokenContract() { - const address = useConstant(ELECTION_2020_CONSTANTS, 'ELECTION_TOKEN_ADDRESS') - return useContract(address, ElectionTokenABI as AbiItem[]) -} diff --git a/packages/maskbook/src/plugins/Election2020/define.tsx b/packages/maskbook/src/plugins/Election2020/define.tsx deleted file mode 100644 index 39c21c616fec..000000000000 --- a/packages/maskbook/src/plugins/Election2020/define.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { SnackbarContent } from '@material-ui/core' -import { Suspense } from 'react' -import MaskbookPluginWrapper from '../MaskbookPluginWrapper' -import { Election2020MetaKey, Election2020PluginID } from './constants' -import { Election2020MetadataReader } from './helpers' -import type { Election2020JSONPayload } from './types' -import { createCompositionDialog } from '../utils/createCompositionDialog' -import { ElectionPacket } from './UI/ElectionPacket' -import { ElectionCompositionDialog } from './UI/ElectionCompositionDialog' -import { resolveStateName, resolveCandidateName } from './pipes' -import { Flags } from '../../utils/flags' -import { PluginConfig, PluginScope, PluginStage } from '../types' - -const [ElectionCompositionEntry, ElectionCompositionUI] = createCompositionDialog('🎫 Election', (props) => ( - -)) - -export const Election2020PluginDefine: PluginConfig = { - pluginName: 'Election 2020', - identifier: Election2020PluginID, - stage: PluginStage.Production, - scope: PluginScope.Public, - successDecryptionInspector: function Comp(props) { - const payload = Election2020MetadataReader(props.message.meta) - if (!payload.ok) return null - return ( - - }> - - - - ) - }, - postDialogMetadataBadge: new Map([ - [ - Election2020MetaKey, - (payload: Election2020JSONPayload) => { - return `A Election Packet of ${resolveStateName(payload.state)} and ${resolveCandidateName( - payload.winner, - )} is the winner.` - }, - ], - ]), - PageComponent: Flags.election2020_composition_dialog_enabled ? ElectionCompositionUI : undefined, - postDialogEntries: Flags.election2020_composition_dialog_enabled ? [ElectionCompositionEntry] : undefined, -} diff --git a/packages/maskbook/src/plugins/Election2020/election.json b/packages/maskbook/src/plugins/Election2020/election.json deleted file mode 100644 index 5ab9af51cffb..000000000000 --- a/packages/maskbook/src/plugins/Election2020/election.json +++ /dev/null @@ -1,54 +0,0 @@ -[ - { "state_type": 0, "state_id": "AL", "state_name": "Alabama", "votes": 9 }, - { "state_type": 1, "state_id": "AK", "state_name": "Alaska", "votes": 3 }, - { "state_type": 2, "state_id": "AZ", "state_name": "Arizona", "votes": 11 }, - { "state_type": 3, "state_id": "AR", "state_name": "Arkansas", "votes": 6 }, - { "state_type": 4, "state_id": "CA", "state_name": "California", "votes": 55 }, - { "state_type": 5, "state_id": "CO", "state_name": "Colorado", "votes": 9 }, - { "state_type": 6, "state_id": "CT", "state_name": "Connecticut", "votes": 7 }, - { "state_type": 7, "state_id": "DC", "state_name": "Washington, D.C.", "votes": 3 }, - { "state_type": 8, "state_id": "DE", "state_name": "Delaware", "votes": 3 }, - { "state_type": 9, "state_id": "FL", "state_name": "Florida", "votes": 29 }, - { "state_type": 10, "state_id": "GA", "state_name": "Georgia", "votes": 16 }, - { "state_type": 11, "state_id": "HI", "state_name": "Hawaii", "votes": 4 }, - { "state_type": 12, "state_id": "ID", "state_name": "Idaho", "votes": 4 }, - { "state_type": 13, "state_id": "IL", "state_name": "Illinois", "votes": 20 }, - { "state_type": 14, "state_id": "IN", "state_name": "Indiana", "votes": 11 }, - { "state_type": 15, "state_id": "IA", "state_name": "Iowa", "votes": 6 }, - { "state_type": 16, "state_id": "KS", "state_name": "Kansas", "votes": 6 }, - { "state_type": 17, "state_id": "KY", "state_name": "Kentucky", "votes": 8 }, - { "state_type": 18, "state_id": "LA", "state_name": "Louisiana", "votes": 8 }, - { "state_type": 19, "state_id": "ME", "state_name": "Maine", "votes": 4 }, - { "state_type": 20, "state_id": "MD", "state_name": "Maryland", "votes": 10 }, - { "state_type": 21, "state_id": "MA", "state_name": "Massachusetts", "votes": 11 }, - { "state_type": 22, "state_id": "MI", "state_name": "Michigan", "votes": 16 }, - { "state_type": 23, "state_id": "MN", "state_name": "Minnesota", "votes": 10 }, - { "state_type": 24, "state_id": "MS", "state_name": "Mississippi", "votes": 6 }, - { "state_type": 25, "state_id": "MO", "state_name": "Missouri", "votes": 10 }, - { "state_type": 26, "state_id": "MT", "state_name": "Montana", "votes": 3 }, - { "state_type": 27, "state_id": "NE", "state_name": "Nebraska", "votes": 5 }, - { "state_type": 28, "state_id": "NV", "state_name": "Nevada", "votes": 6 }, - { "state_type": 29, "state_id": "NH", "state_name": "New Hampshire", "votes": 4 }, - { "state_type": 30, "state_id": "NJ", "state_name": "New Jersey", "votes": 14 }, - { "state_type": 31, "state_id": "NM", "state_name": "New Mexico", "votes": 5 }, - { "state_type": 32, "state_id": "NY", "state_name": "New York", "votes": 29 }, - { "state_type": 33, "state_id": "NC", "state_name": "North Carolina", "votes": 15 }, - { "state_type": 34, "state_id": "ND", "state_name": "North Dakota", "votes": 3 }, - { "state_type": 35, "state_id": "OH", "state_name": "Ohio", "votes": 18 }, - { "state_type": 36, "state_id": "OK", "state_name": "Oklahoma", "votes": 7 }, - { "state_type": 37, "state_id": "OR", "state_name": "Oregon", "votes": 7 }, - { "state_type": 38, "state_id": "PA", "state_name": "Pennsylvania", "votes": 20 }, - { "state_type": 39, "state_id": "RI", "state_name": "Rhode Island", "votes": 4 }, - { "state_type": 40, "state_id": "SC", "state_name": "South Carolina", "votes": 9 }, - { "state_type": 41, "state_id": "SD", "state_name": "South Dakota", "votes": 3 }, - { "state_type": 42, "state_id": "TN", "state_name": "Tennessee", "votes": 11 }, - { "state_type": 43, "state_id": "TX", "state_name": "Texas", "votes": 38 }, - { "state_type": 44, "state_id": "UT", "state_name": "Utah", "votes": 6 }, - { "state_type": 45, "state_id": "VT", "state_name": "Vermont", "votes": 3 }, - { "state_type": 46, "state_id": "VA", "state_name": "Virginia", "votes": 13 }, - { "state_type": 47, "state_id": "WA", "state_name": "Washington", "votes": 12 }, - { "state_type": 48, "state_id": "WV", "state_name": "West Virginia", "votes": 5 }, - { "state_type": 49, "state_id": "WI", "state_name": "Wisconsin", "votes": 10 }, - { "state_type": 50, "state_id": "WY", "state_name": "Wyoming", "votes": 3 }, - { "state_type": 51, "state_id": "ZONE_51", "state_name": "Zone 51", "votes": 51 } -] diff --git a/packages/maskbook/src/plugins/Election2020/helpers.ts b/packages/maskbook/src/plugins/Election2020/helpers.ts deleted file mode 100644 index 9b4e6083673a..000000000000 --- a/packages/maskbook/src/plugins/Election2020/helpers.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { createTypedMessageMetadataReader, createRenderWithMetadata } from '../../protocols/typed-message/metadata' -import { Election2020MetaKey } from './constants' -import type { Election2020JSONPayload } from './types' -import schema from './schema.json' - -export const Election2020MetadataReader = createTypedMessageMetadataReader( - Election2020MetaKey, - schema, -) -export const renderWithElection2020Metadata = createRenderWithMetadata(Election2020MetadataReader) diff --git a/packages/maskbook/src/plugins/Election2020/hooks/useAllElectionTokensOfOwner.ts b/packages/maskbook/src/plugins/Election2020/hooks/useAllElectionTokensOfOwner.ts deleted file mode 100644 index f03d15111e66..000000000000 --- a/packages/maskbook/src/plugins/Election2020/hooks/useAllElectionTokensOfOwner.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { useERC721TokenIdsOfOwner } from '../../../web3/hooks/useERC721TokensOfOwner' -import type { ERC721TokenDetailed } from '../../../web3/types' - -export function useAllElectionTokensOfOwner(token?: ERC721TokenDetailed) { - const { value: tokenIds, ...result } = useERC721TokenIdsOfOwner(token) - return { - ...result, - value: tokenIds.filter(Boolean).map((tokenId) => ({ - tokenId: tokenId ?? '', - tokenImageURL: tokenId ? `${token?.baseURI}${tokenId}.gif` : '', - })), - } -} diff --git a/packages/maskbook/src/plugins/Election2020/hooks/useAvailability.ts b/packages/maskbook/src/plugins/Election2020/hooks/useAvailability.ts deleted file mode 100644 index 50b120334689..000000000000 --- a/packages/maskbook/src/plugins/Election2020/hooks/useAvailability.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { useAsyncRetry } from 'react-use' -import { useElectionTokenContract } from '../contracts/useElectionTokenContract' -import { resolveStateType } from '../pipes' -import type { US_STATE_TYPE } from '../types' - -export function useAvailability(stateType: US_STATE_TYPE) { - const electionTokenContract = useElectionTokenContract() - const { value, ...result } = useAsyncRetry(async () => { - if (!electionTokenContract) return null - return electionTokenContract.methods.check_availability(resolveStateType(stateType)).call() - }, [stateType]) - return { - value: Number.parseInt(value ?? '0', 10), - ...result, - } -} diff --git a/packages/maskbook/src/plugins/Election2020/hooks/useElectionTokens.ts b/packages/maskbook/src/plugins/Election2020/hooks/useElectionTokens.ts deleted file mode 100644 index 0bd43b5c4df1..000000000000 --- a/packages/maskbook/src/plugins/Election2020/hooks/useElectionTokens.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { hexToNumberString, soliditySha3 } from 'web3-utils' -import type { ElectionToken, US_STATE_TYPE } from '../types' -import ELECTION_STATE_VS_VOTES from '../election.json' -import { resolveStateType } from '../pipes' -import type { ERC721TokenDetailed } from '../../../web3/types' - -export function useElectionTokens(stateType: US_STATE_TYPE, token?: ERC721TokenDetailed): ElectionToken[] { - const state = ELECTION_STATE_VS_VOTES.find((x) => x.state_id === stateType) - if (!state) return [] - if (!token) return [] - return new Array(state.votes).fill(0).map((_, idx) => { - const tokenId_ = soliditySha3({ t: 'uint8', v: resolveStateType(stateType) }, { t: 'uint8', v: idx }) - const tokenId = tokenId_ ? hexToNumberString(tokenId_) : '' - return { - tokenId, - tokenImageURL: tokenId ? `${token.baseURI}${tokenId}.gif` : '', - } - }) -} diff --git a/packages/maskbook/src/plugins/Election2020/hooks/useElectionTokensOfOwner.ts b/packages/maskbook/src/plugins/Election2020/hooks/useElectionTokensOfOwner.ts deleted file mode 100644 index f844241db654..000000000000 --- a/packages/maskbook/src/plugins/Election2020/hooks/useElectionTokensOfOwner.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { US_STATE_TYPE } from '../types' -import ELECTION_STATE_VS_VOTES from '../election.json' -import { useERC721TokenIdsOfOwner } from '../../../web3/hooks/useERC721TokensOfOwner' -import type { ERC721TokenDetailed } from '../../../web3/types' -import { useElectionTokens } from './useElectionTokens' - -export function useElectionTokensOfOwner(stateType: US_STATE_TYPE, token?: ERC721TokenDetailed) { - const state = ELECTION_STATE_VS_VOTES.find((x) => x.state_id === stateType) - const { value: tokenIds, ...result } = useERC721TokenIdsOfOwner(token) - const totalTokens = useElectionTokens(stateType, token) - - if (!state || !token || !totalTokens.length) - return { - ...result, - value: [], - } - return { - ...result, - value: totalTokens.filter((x) => tokenIds.includes(x.tokenId)), - } -} diff --git a/packages/maskbook/src/plugins/Election2020/hooks/useMintCallback.ts b/packages/maskbook/src/plugins/Election2020/hooks/useMintCallback.ts deleted file mode 100644 index 12dfa3ef0622..000000000000 --- a/packages/maskbook/src/plugins/Election2020/hooks/useMintCallback.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { useCallback, useEffect, useState } from 'react' -import { useTransactionReceipt } from '../../../web3/hooks/useTransaction' -import { TransactionStateType, useTransactionState } from '../../../web3/hooks/useTransactionState' -import { useElectionTokenContract } from '../contracts/useElectionTokenContract' -import { PluginElection2020 } from '../messages' -import { resolveStateType } from '../pipes' -import type { CANDIDATE_TYPE, US_STATE_TYPE } from '../types' - -export function useMintCallback(from: string, stateType: US_STATE_TYPE, candidateType: CANDIDATE_TYPE) { - const [txHash, setTxHash] = useState('') - const [mintState, setMintState] = useTransactionState() - const electionTokenContract = useElectionTokenContract() - - const mintCallback = useCallback(async () => { - if (!electionTokenContract) { - setMintState({ - type: TransactionStateType.UNKNOWN, - }) - return - } - - // pre-step: start waiting for provider to confirm tx - setMintState({ - type: TransactionStateType.WAIT_FOR_CONFIRMING, - }) - - // step 1: check remaining - const remaining = await electionTokenContract.methods.check_availability(resolveStateType(stateType)).call() - if (Number.parseInt(remaining || '0', 10) <= 0) { - setMintState({ - type: TransactionStateType.FAILED, - error: new Error('There is none NTF token left.'), - }) - return - } - - // step 2: mint by server - try { - const { mint_transaction_hash } = await PluginElection2020.mintElectionPacket( - from, - stateType, - candidateType, - ) - setTxHash(mint_transaction_hash) - } catch (error) { - setMintState({ - type: TransactionStateType.FAILED, - error, - }) - } - }, [from, stateType, candidateType, electionTokenContract]) - - const resetCallback = useCallback(() => { - setMintState({ - type: TransactionStateType.UNKNOWN, - }) - }, []) - - //#region tracking receipt - const receipt = useTransactionReceipt(txHash) - - useEffect(() => { - if (!receipt) return - if (receipt.status) - setMintState({ - type: TransactionStateType.CONFIRMED, - no: 0, - receipt, - }) - else - setMintState({ - type: TransactionStateType.FAILED, - error: new Error('The contract execution was not successful, check your transaction.'), - }) - }, [receipt]) - //#endregion - - return [mintState, mintCallback, resetCallback] as const -} diff --git a/packages/maskbook/src/plugins/Election2020/messages.ts b/packages/maskbook/src/plugins/Election2020/messages.ts deleted file mode 100644 index 2bdcd4d66274..000000000000 --- a/packages/maskbook/src/plugins/Election2020/messages.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Election2020PluginID } from './constants' -import { createPluginMessage } from '../utils/createPluginMessage' -import { createPluginRPC } from '../utils/createPluginRPC' - -if (module.hot) module.hot.accept() -const ElectionMessage = createPluginMessage<{ _: unknown }>(Election2020PluginID) -export const PluginElection2020 = createPluginRPC( - Election2020PluginID, - () => import('./services'), - ElectionMessage.events._, -) diff --git a/packages/maskbook/src/plugins/Election2020/pipes.ts b/packages/maskbook/src/plugins/Election2020/pipes.ts deleted file mode 100644 index cd7218334241..000000000000 --- a/packages/maskbook/src/plugins/Election2020/pipes.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { CANDIDATE_TYPE, US_PARTY_TYPE, US_STATE_TYPE } from './types' -import ELECTION_STATE_VS_VOTES from './election.json' - -export function resolveCandidateName(candidateType: CANDIDATE_TYPE) { - if (candidateType === CANDIDATE_TYPE.TRUMP) return 'Donald Trump' - return 'Joe Biden' -} - -export function resolveCandidateBriefName(candidateType: CANDIDATE_TYPE) { - if (candidateType === CANDIDATE_TYPE.TRUMP) return 'Trump' - return 'Biden' -} - -export function resolveCandiateType(candidateType: CANDIDATE_TYPE) { - if (candidateType === CANDIDATE_TYPE.TRUMP) return 0 - return 1 -} - -export function resolveCandidateSNSAccount(network: string, candidateType: CANDIDATE_TYPE) { - switch (network) { - case 'twitter.com': - return candidateType === CANDIDATE_TYPE.TRUMP ? 'realDonaldTrump' : 'JoeBiden' - case 'facebook.com': - return '' - default: - return '' - } -} - -export function resolveCandidatePartyType(candidateType: CANDIDATE_TYPE) { - if (candidateType === CANDIDATE_TYPE.TRUMP) return US_PARTY_TYPE.RED - return US_PARTY_TYPE.BLUE -} - -export function resolveStateName(stateType: US_STATE_TYPE) { - const state = ELECTION_STATE_VS_VOTES.find((x) => x.state_id === stateType) - return state?.state_name ?? stateType -} - -export function resolveStateType(stateType: US_STATE_TYPE) { - const state = ELECTION_STATE_VS_VOTES.find((x) => x.state_id === stateType) - return state?.state_type ?? 0 -} diff --git a/packages/maskbook/src/plugins/Election2020/schema.json b/packages/maskbook/src/plugins/Election2020/schema.json deleted file mode 100644 index 6b04a6c371d6..000000000000 --- a/packages/maskbook/src/plugins/Election2020/schema.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "type": "object", - "additionalProperties": true, - "properties": { - "state": { - "type": "string", - "title": "state" - }, - "winner": { - "type": "string", - "title": "state" - }, - "sender": { - "type": "object", - "additionalProperties": true, - "properties": { - "address": { - "type": "string", - "title": "address" - }, - "name": { - "type": "string", - "title": "name" - }, - "message": { - "type": "string", - "title": "message" - } - }, - "required": ["address", "message", "name"], - "title": "sender" - }, - "nft_token": { - "type": "object", - "additionalProperties": true, - "properties": { - "address": { - "description": "token address", - "type": "string", - "title": "address" - }, - "name": { - "description": "token name", - "type": "string", - "title": "name" - }, - "symbol": { - "description": "token symbol", - "type": "string", - "title": "symbol" - } - }, - "required": ["address", "name", "symbol"], - "title": "token" - }, - "creation_time": { - "type": "number", - "title": "creation_time" - }, - "network": { - "enum": ["Mainnet", "Rinkeby", "Ropsten"], - "type": "string", - "title": "network" - } - }, - "required": ["state", "winner", "sender", "creation_time", "network"] -} diff --git a/packages/maskbook/src/plugins/Election2020/services.ts b/packages/maskbook/src/plugins/Election2020/services.ts deleted file mode 100644 index 87e7abe5a325..000000000000 --- a/packages/maskbook/src/plugins/Election2020/services.ts +++ /dev/null @@ -1,42 +0,0 @@ -import * as jwt from 'jsonwebtoken' -import { sha3 } from 'web3-utils' -import Services from '../../extension/service' -import { resolveChainName } from '../../web3/pipes' -import { resolveCandiateType, resolveStateType } from './pipes' -import type { CANDIDATE_TYPE, US_STATE_TYPE } from './types' - -export async function mintElectionPacket( - from: string, - stateType: US_STATE_TYPE, - candidateType: CANDIDATE_TYPE, -): Promise<{ mint_transaction_hash: string }> { - const host = 'https://redpacket.gives' - const x = 'a3323cd1-fa42-44cd-b053-e474365ab3da' - - const chainId = await Services.Ethereum.getChainId(from) - const network = resolveChainName(chainId).toLowerCase() - - // skip hi - const auth = await fetch(`${host}/hi?id=${from}&network=${network}`) - if (!auth.ok) throw new Error('Auth failed') - - const verify = await auth.text() - const jwt_encoded: { - state: number - winner: number - recipient: string - validation: string - signature: string - } = { - state: resolveStateType(stateType), - winner: resolveCandiateType(candidateType), - recipient: from, - validation: sha3(from)!, - signature: await Services.Ethereum.sign(verify, from, chainId), - } - const mintResponse = await fetch( - `${host}/mrpresident?payload=${jwt.sign(jwt_encoded, x, { algorithm: 'HS256' })}&network=${network}`, - ) - if (!mintResponse.ok) throw new Error('Claim failed') - return { mint_transaction_hash: await mintResponse.text() } -} diff --git a/packages/maskbook/src/plugins/Election2020/types.ts b/packages/maskbook/src/plugins/Election2020/types.ts deleted file mode 100644 index 493dd30e3c63..000000000000 --- a/packages/maskbook/src/plugins/Election2020/types.ts +++ /dev/null @@ -1,88 +0,0 @@ -import type { EthereumNetwork } from '../../web3/types' - -export enum CANDIDATE_TYPE { - TRUMP = 'Trump', - BIDEN = 'Biden', -} - -export enum US_PARTY_TYPE { - RED = 'RED', - BLUE = 'BLUE', -} - -export enum US_STATE_TYPE { - AL = 'AL', - AK = 'AK', - AZ = 'AZ', - AR = 'AR', - CA = 'CA', - CO = 'CO', - CT = 'CT', - DE = 'DE', - FL = 'FL', - GA = 'GA', - HI = 'HI', - ID = 'ID', - IL = 'IL', - IN = 'IN', - IA = 'IA', - KS = 'KS', - KY = 'KY', - LA = 'LA', - ME = 'ME', - MD = 'MD', - MA = 'MA', - MI = 'MI', - MN = 'MN', - MS = 'MS', - MO = 'MO', - MT = 'MT', - NE = 'NE', - NV = 'NV', - NH = 'NH', - NJ = 'NJ', - NM = 'NM', - NY = 'NY', - NC = 'NC', - ND = 'ND', - OH = 'OH', - OK = 'OK', - OR = 'OR', - PA = 'PA', - RI = 'RI', - SC = 'SC', - SD = 'SD', - TN = 'TN', - TX = 'TX', - UT = 'UT', - VT = 'VT', - VA = 'VA', - WA = 'WA', - WV = 'WV', - WI = 'WI', - WY = 'WY', - DC = 'DC', - ZONE_51 = 'ZONE_51', -} - -export interface ElectionToken { - tokenId: string // sha3(state + id) - tokenImageURL: string -} - -export interface Election2020JSONPayload { - state: US_STATE_TYPE - winner: CANDIDATE_TYPE - sender: { - address: string - name: string - message: string - } - ntf_token: { - address: string - name: string - symbol: string - } - creation_time: number - network: EthereumNetwork -} diff --git a/packages/maskbook/src/plugins/Election2020/victory.json b/packages/maskbook/src/plugins/Election2020/victory.json deleted file mode 100644 index 2f2ed9b57d2a..000000000000 --- a/packages/maskbook/src/plugins/Election2020/victory.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "vote_for_trump_start_at": 20201001, - "vote_for_biden_start_at": 20202001 -} diff --git a/packages/maskbook/src/plugins/Ethereum/README.md b/packages/maskbook/src/plugins/Ethereum/README.md new file mode 100644 index 000000000000..41d6a06bfc79 --- /dev/null +++ b/packages/maskbook/src/plugins/Ethereum/README.md @@ -0,0 +1 @@ +## Plugin: Ethereum Wallet diff --git a/packages/maskbook/src/plugins/Ethereum/UI/SelectTokenDialog.tsx b/packages/maskbook/src/plugins/Ethereum/UI/SelectTokenDialog.tsx index 24b5ebb4f6be..2d845c59db27 100644 --- a/packages/maskbook/src/plugins/Ethereum/UI/SelectTokenDialog.tsx +++ b/packages/maskbook/src/plugins/Ethereum/UI/SelectTokenDialog.tsx @@ -30,16 +30,7 @@ const useStyles = makeStyles((theme: Theme) => }), ) -export interface SelectTokenDialogProps extends withClasses { - open?: boolean - includeTokens?: string[] - excludeTokens?: string[] - selectedTokens?: string[] - tokens?: (ERC20TokenDetailed | EtherTokenDetailed)[] - disableSearchBar?: boolean - onSubmit?: (token: ERC20TokenDetailed) => void - onClose?: () => void -} +export interface SelectTokenDialogProps extends withClasses {} export function SelectTokenDialog(props: SelectTokenDialogProps) { const { t } = useI18N() diff --git a/packages/maskbook/src/plugins/FileService/MainDialog.tsx b/packages/maskbook/src/plugins/FileService/MainDialog.tsx index ea81a69250a2..fea6f782f809 100644 --- a/packages/maskbook/src/plugins/FileService/MainDialog.tsx +++ b/packages/maskbook/src/plugins/FileService/MainDialog.tsx @@ -5,7 +5,7 @@ import { useState } from 'react' import { useBeforeUnload } from 'react-use' import { useStylesExtends } from '../../components/custom-ui-helper' import { InjectedDialog } from '../../components/shared/InjectedDialog' -import { editActivatedPostMetadata } from '../../social-network/ui' +import { editActivatedPostMetadata } from '../../protocols/typed-message/global-state' import { useI18N } from '../../utils/i18n-next-ui' import { Entry } from './components' import { META_KEY_2 } from './constants' diff --git a/packages/maskbook/src/plugins/Gitcoin/UI/DonateDialog.tsx b/packages/maskbook/src/plugins/Gitcoin/UI/DonateDialog.tsx index 40f79df06ff3..230bae4807f2 100644 --- a/packages/maskbook/src/plugins/Gitcoin/UI/DonateDialog.tsx +++ b/packages/maskbook/src/plugins/Gitcoin/UI/DonateDialog.tsx @@ -17,11 +17,10 @@ import { TransactionStateType } from '../../../web3/hooks/useTransactionState' import { InjectedDialog } from '../../../components/shared/InjectedDialog' import { SelectTokenDialogEvent, WalletMessages } from '../../Wallet/messages' import { useRemoteControlledDialog } from '../../../utils/hooks/useRemoteControlledDialog' -import { useShareLink } from '../../../utils/hooks/useShareLink' import { usePostLink } from '../../../components/DataSource/usePostInfo' import { Flags } from '../../../utils/flags' import { useEtherTokenDetailed } from '../../../web3/hooks/useEtherTokenDetailed' -import { getActivatedUI } from '../../../social-network/ui' +import { activatedSocialNetworkUI } from '../../../social-network' import { PluginGitcoinMessages } from '../messages' import { EthereumMessages } from '../../Ethereum/messages' import { useTokenBalance } from '../../../web3/hooks/useTokenBalance' @@ -29,6 +28,7 @@ import { EthereumWalletConnectedBoundary } from '../../../web3/UI/EthereumWallet import { EthereumERC20TokenApprovedBoundary } from '../../../web3/UI/EthereumERC20TokenApprovedBoundary' import { useConstant } from '../../../web3/hooks/useConstant' import { GITCOIN_CONSTANT } from '../constants' +import { isTwitter } from '../../../social-network-adaptor/twitter.com/base' const useStyles = makeStyles((theme) => createStyles({ @@ -135,21 +135,23 @@ export function DonateDialog(props: DonateDialogProps) { //#endregion //#region transaction dialog - const cashTag = getActivatedUI()?.networkIdentifier === 'twitter.com' ? '$' : '' + const cashTag = isTwitter(activatedSocialNetworkUI) ? '$' : '' const postLink = usePostLink() - const shareLink = useShareLink( - token - ? [ - `I just donated ${title} with ${formatBalance( - amount, - token.decimals ?? 0, - token.decimals ?? 0, - )} ${cashTag}${token.symbol}. Follow @realMaskbook (mask.io) to donate Gitcoin grants.`, - '#mask_io', - postLink, - ].join('\n') - : '', - ) + const shareLink = activatedSocialNetworkUI.utils + .getShareLinkURL?.( + token + ? [ + `I just donated ${title} with ${formatBalance( + amount, + token.decimals ?? 0, + token.decimals ?? 0, + )} ${cashTag}${token.symbol}. Follow @realMaskbook (mask.io) to donate Gitcoin grants.`, + '#mask_io', + postLink, + ].join('\n') + : '', + ) + .toString() // close the transaction dialog const [_, setTransactionDialogOpen] = useRemoteControlledDialog( diff --git a/packages/maskbook/src/plugins/Gitcoin/define.tsx b/packages/maskbook/src/plugins/Gitcoin/define.tsx index 3877167a9021..13f389cd4281 100644 --- a/packages/maskbook/src/plugins/Gitcoin/define.tsx +++ b/packages/maskbook/src/plugins/Gitcoin/define.tsx @@ -9,7 +9,7 @@ import { GITCOIN_PLUGIN_ID } from './constants' import { DonateDialog } from './UI/DonateDialog' import { PreviewCard } from './UI/PreviewCard' -const isGitcoin = (x: string): boolean => x.startsWith('https://gitcoin.co/grants') +const isGitcoin = (x: string): boolean => /^https:\/\/gitcoin.co\/grants\/\d+/.test(x) export const GitcoinPluginDefine: PluginConfig = { pluginName: 'Gitcoin', diff --git a/packages/maskbook/src/plugins/ITO/UI/ClaimGuide.tsx b/packages/maskbook/src/plugins/ITO/UI/ClaimGuide.tsx index 78fca697f17b..1a0710d1cc40 100644 --- a/packages/maskbook/src/plugins/ITO/UI/ClaimGuide.tsx +++ b/packages/maskbook/src/plugins/ITO/UI/ClaimGuide.tsx @@ -32,7 +32,7 @@ const useStyles = makeStyles((theme) => interface ClaimGuideProps extends Pick { open: boolean status: ClaimStatus - shareSuccessLink: string + shareSuccessLink: string | undefined isBuyer: boolean retryPayload: () => void onUpdate: (status: ClaimStatus) => void diff --git a/packages/maskbook/src/plugins/ITO/UI/CompositionDialog.tsx b/packages/maskbook/src/plugins/ITO/UI/CompositionDialog.tsx index bb0324220d6f..30777ec83146 100644 --- a/packages/maskbook/src/plugins/ITO/UI/CompositionDialog.tsx +++ b/packages/maskbook/src/plugins/ITO/UI/CompositionDialog.tsx @@ -6,7 +6,7 @@ import { ITO_MetaKey } from '../constants' import { JSON_PayloadInMask, DialogTabs } from '../types' import { useI18N } from '../../../utils/i18n-next-ui' import AbstractTab, { AbstractTabProps } from '../../../extension/options-page/DashboardComponents/AbstractTab' -import { editActivatedPostMetadata } from '../../../social-network/ui' +import { editActivatedPostMetadata } from '../../../protocols/typed-message/global-state' import { CreateGuide } from './CreateGuide' import { payloadOutMask } from '../helpers' import { PoolList } from './PoolList' diff --git a/packages/maskbook/src/plugins/ITO/UI/CreateForm.tsx b/packages/maskbook/src/plugins/ITO/UI/CreateForm.tsx index 60054e4a2d52..765d51be9cb7 100644 --- a/packages/maskbook/src/plugins/ITO/UI/CreateForm.tsx +++ b/packages/maskbook/src/plugins/ITO/UI/CreateForm.tsx @@ -76,7 +76,7 @@ export function CreateForm(props: CreateFormProps) { const currentIdentity = useCurrentIdentity() const senderName = currentIdentity?.identifier.userId ?? currentIdentity?.linkedPersona?.nickname ?? 'Unknown User' - const [isMask, setIsMask] = useState(true) + const [isMask, setIsMask] = useState(Flags.mask_ito_enabled ? true : false) const [message, setMessage] = useState(origin?.title ?? '') const [totalOfPerWallet, setTotalOfPerWallet] = useState( new BigNumber(origin?.limit || '0').isZero() diff --git a/packages/maskbook/src/plugins/ITO/UI/ITO.tsx b/packages/maskbook/src/plugins/ITO/UI/ITO.tsx index 891662a1c09f..5ac35496adbe 100644 --- a/packages/maskbook/src/plugins/ITO/UI/ITO.tsx +++ b/packages/maskbook/src/plugins/ITO/UI/ITO.tsx @@ -20,7 +20,6 @@ import { formatDateTime } from '../../../utils/date' import { getTextUILength } from '../../../utils/getTextUILength' import { ClaimGuide, ClaimStatus } from './ClaimGuide' import { usePostLink } from '../../../components/DataSource/usePostInfo' -import { useShareLink } from '../../../utils/hooks/useShareLink' import { TokenIcon } from '../../../extension/options-page/DashboardComponents/TokenIcon' import { sortTokens } from '../helpers' import { ITO_EXCHANGE_RATION_MAX, TIME_WAIT_BLOCKCHAIN } from '../constants' @@ -30,6 +29,7 @@ import { getAssetAsBlobURL } from '../../../utils/suspends/getAssetAsBlobURL' import { EthereumMessages } from '../../Ethereum/messages' import { usePoolPayload } from '../hooks/usePoolPayload' import Services from '../../../extension/service' +import { activatedSocialNetworkUI } from '../../../social-network' export interface IconProps { size?: number @@ -257,13 +257,15 @@ export function ITO(props: ITO_Props) { const isBuyer = chainId === payload.chain_id && payload.buyers.map((val) => val.address.toLowerCase()).includes(account.toLowerCase()) - const shareSuccessLink = useShareLink( - t('plugin_ito_claim_success_share', { - user: seller.name, - link: postLink, - symbol: token.symbol, - }), - ) + const shareSuccessLink = activatedSocialNetworkUI.utils + .getShareLinkURL?.( + t('plugin_ito_claim_success_share', { + user: seller.name, + link: postLink, + symbol: token.symbol, + }), + ) + .toString() const canWithdraw = useMemo( () => isAccountSeller && !tradeInfo?.destructInfo && (listOfStatus.includes(ITO_Status.expired) || noRemain), [tradeInfo, listOfStatus, isAccountSeller, noRemain], @@ -284,13 +286,15 @@ export function ITO(props: ITO_Props) { }, [shareSuccessLink]) //#endregion - const shareLink = useShareLink( - t('plugin_ito_claim_foreshow_share', { - link: postLink, - name: token.name, - symbol: token.symbol ?? 'token', - }), - ) + const shareLink = activatedSocialNetworkUI.utils + .getShareLinkURL?.( + t('plugin_ito_claim_foreshow_share', { + link: postLink, + name: token.name, + symbol: token.symbol ?? 'token', + }), + ) + .toString() const onShare = useCallback(async () => { window.open(shareLink, '_blank', 'noopener noreferrer') }, [shareLink]) @@ -595,15 +599,17 @@ export function ITO(props: ITO_Props) { {t('plugin_ito_unlock_in_advance')} - - - {t('plugin_ito_share')} - - + {shareLink ? ( + + + {t('plugin_ito_share')} + + + ) : undefined} ) : listOfStatus.includes(ITO_Status.started) ? ( diff --git a/packages/maskbook/src/plugins/ITO/UI/ITO_Card.tsx b/packages/maskbook/src/plugins/ITO/UI/ITO_Card.tsx index 03be2ab5c33c..ff55da54d08a 100644 --- a/packages/maskbook/src/plugins/ITO/UI/ITO_Card.tsx +++ b/packages/maskbook/src/plugins/ITO/UI/ITO_Card.tsx @@ -5,9 +5,9 @@ import { useCallback, useEffect } from 'react' import { useStylesExtends } from '../../../components/custom-ui-helper' import { usePostLink } from '../../../components/DataSource/usePostInfo' import ActionButton from '../../../extension/options-page/DashboardComponents/ActionButton' -import { getActivatedUI } from '../../../social-network/ui' +import { activatedSocialNetworkUI } from '../../../social-network' +import { isTwitter } from '../../../social-network-adaptor/twitter.com/base' import { useRemoteControlledDialog } from '../../../utils/hooks/useRemoteControlledDialog' -import { useShareLink } from '../../../utils/hooks/useShareLink' import { TransactionStateType } from '../../../web3/hooks/useTransactionState' import type { ERC20TokenDetailed } from '../../../web3/types' import { EthereumMessages } from '../../Ethereum/messages' @@ -73,19 +73,21 @@ export function ITO_Card(props: ITO_CardProps) { //#endregion //#region transaction dialog - const cashTag = getActivatedUI()?.networkIdentifier === 'twitter.com' ? '$' : '' + const cashTag = isTwitter(activatedSocialNetworkUI) ? '$' : '' const postLink = usePostLink() - const shareLink = useShareLink( - [ - `I just claimed ${cashTag}${token?.symbol} with ${formatBalance( - new BigNumber(packet?.claimable ?? '0'), - 18, - 6, - )}. Follow @realMaskbook (mask.io) to claim airdrop.`, - '#mask_io', - postLink, - ].join('\n'), - ) + const shareLink = activatedSocialNetworkUI.utils + .getShareLinkURL?.( + [ + `I just claimed ${cashTag}${token?.symbol} with ${formatBalance( + new BigNumber(packet?.claimable ?? '0'), + 18, + 6, + )}. Follow @realMaskbook (mask.io) to claim airdrop.`, + '#mask_io', + postLink, + ].join('\n'), + ) + .toString() // close the transaction dialog const [_, setTransactionDialogOpen] = useRemoteControlledDialog( diff --git a/packages/maskbook/src/plugins/ITO/UI/ShareDialog.tsx b/packages/maskbook/src/plugins/ITO/UI/ShareDialog.tsx index d2f1a0bdc591..616986734b14 100644 --- a/packages/maskbook/src/plugins/ITO/UI/ShareDialog.tsx +++ b/packages/maskbook/src/plugins/ITO/UI/ShareDialog.tsx @@ -7,7 +7,6 @@ import { useStylesExtends } from '../../../components/custom-ui-helper' import { useI18N } from '../../../utils/i18n-next-ui' import { formatBalance } from '../../../plugins/Wallet/formatter' import { usePostLink } from '../../../components/DataSource/usePostInfo' -import { useShareLink } from '../../../utils/hooks/useShareLink' import { getAssetAsBlobURL } from '../../../utils/suspends/getAssetAsBlobURL' import { useCallback } from 'react' @@ -59,7 +58,7 @@ const useStyles = makeStyles((theme) => ) export interface ShareDialogProps extends withClasses<'root'> { - shareSuccessLink: string + shareSuccessLink: string | undefined token: EtherTokenDetailed | ERC20TokenDetailed actualSwapAmount: BigNumber poolName: string @@ -91,13 +90,15 @@ export function ShareDialog(props: ShareDialogProps) { {actualSwapAmount.isZero() ? t('plugin_ito_out_of_stock_hit') : t('plugin_ito_congratulations')} - - {t('plugin_ito_dialog_claim_share_title')} - + {shareSuccessLink ? ( + + {t('plugin_ito_dialog_claim_share_title')} + + ) : null} diff --git a/packages/maskbook/src/plugins/MaskbookPluginWrapper.tsx b/packages/maskbook/src/plugins/MaskbookPluginWrapper.tsx index 4bef2417c3f7..25ba4164e08d 100644 --- a/packages/maskbook/src/plugins/MaskbookPluginWrapper.tsx +++ b/packages/maskbook/src/plugins/MaskbookPluginWrapper.tsx @@ -1,7 +1,8 @@ import { makeStyles, Typography, ThemeProvider, SnackbarContent } from '@material-ui/core' -import { getActivatedUI } from '../social-network/ui' +import { activatedSocialNetworkUI } from '../social-network' import { MaskbookIcon } from '../resources/MaskbookIcon' -import { Suspense } from 'react' +import { Suspense, useRef } from 'react' +import { isTwitter } from '../social-network-adaptor/twitter.com/base' interface PluginWrapperProps { pluginName: string @@ -10,7 +11,6 @@ interface PluginWrapperProps { } const useStyles = makeStyles((theme) => { - const network = getActivatedUI()?.networkIdentifier return { card: { marginTop: theme.spacing(1), @@ -18,7 +18,7 @@ const useStyles = makeStyles((theme) => { boxSizing: 'border-box', border: `1px solid ${theme.palette.divider}`, cursor: 'default', - ...(network === 'twitter.com' + ...(isTwitter(activatedSocialNetworkUI) ? { borderRadius: 15, overflow: 'hidden', @@ -51,20 +51,25 @@ const useStyles = makeStyles((theme) => { export default function MaskbookPluginWrapper(props: PluginWrapperProps) { const classes = useStyles() const { pluginName, children } = props + const useStableTheme = useRef(activatedSocialNetworkUI.customization.useTheme).current + // eslint-disable-next-line react-hooks/rules-of-hooks + const theme = useStableTheme?.() + + const inner = ( +
ev.stopPropagation()}> +
+ +
+ Mask Plugin + {pluginName} +
+
+
{children}
+
+ ) return ( }> - -
ev.stopPropagation()}> -
- -
- Mask Plugin - {pluginName} -
-
-
{children}
-
-
+ {theme ? {inner} : inner}
) } diff --git a/packages/maskbook/src/plugins/PluginSerivce.ts b/packages/maskbook/src/plugins/PluginSerivce.ts index 04d224b68411..1a794cf4eda7 100644 --- a/packages/maskbook/src/plugins/PluginSerivce.ts +++ b/packages/maskbook/src/plugins/PluginSerivce.ts @@ -16,7 +16,5 @@ import './Polls/utils' import './Transak/messages' import './Trader/messages' import './Polls/utils' -import './Election2020/messages' -import './COTM/messages' import './ITO/messages' import './Airdrop/messages' diff --git a/packages/maskbook/src/plugins/PluginUI.ts b/packages/maskbook/src/plugins/PluginUI.ts index d5e8d15c11d1..b02123fea2db 100644 --- a/packages/maskbook/src/plugins/PluginUI.ts +++ b/packages/maskbook/src/plugins/PluginUI.ts @@ -13,9 +13,7 @@ import { PollsPluginDefine } from './Polls/define' import { StorybookPluginDefine } from './Storybook/define' import { FileServicePluginDefine } from './FileService/UI-define' import { TraderPluginDefine } from './Trader/define' -import { Election2020PluginDefine } from './Election2020/define' import { TransakPluginDefine } from './Transak/define' -import { COTM_PluginDefine } from './COTM/define' import { ITO_PluginDefine } from './ITO/define' import { NFTPluginsDefine } from './NFT/define' import { AirdropPluginDefine } from './Airdrop/define' @@ -32,8 +30,6 @@ sideEffect.then(() => { if (Flags.poll_enabled) plugins.add(PollsPluginDefine) if (Flags.trader_enabled) plugins.add(TraderPluginDefine) if (Flags.transak_enabled) plugins.add(TransakPluginDefine) - if (Flags.election2020_enabled) plugins.add(Election2020PluginDefine) - if (Flags.COTM_enabled) plugins.add(COTM_PluginDefine) if (Flags.airdrop_enabled) plugins.add(AirdropPluginDefine) if (process.env.STORYBOOK) plugins.add(StorybookPluginDefine) }) diff --git a/packages/maskbook/src/plugins/Polls/UI/PollsDialog.tsx b/packages/maskbook/src/plugins/Polls/UI/PollsDialog.tsx index a114ad5f730f..0199252c5c31 100644 --- a/packages/maskbook/src/plugins/Polls/UI/PollsDialog.tsx +++ b/packages/maskbook/src/plugins/Polls/UI/PollsDialog.tsx @@ -20,7 +20,7 @@ import { add as addDate } from 'date-fns' import { PortalShadowRoot } from '../../../utils/shadow-root/ShadowRootPortal' import { useStylesExtends } from '../../../components/custom-ui-helper' import AbstractTab, { AbstractTabProps } from '../../../extension/options-page/DashboardComponents/AbstractTab' -import { editActivatedPostMetadata } from '../../../social-network/ui' +import { editActivatedPostMetadata } from '../../../protocols/typed-message/global-state' import { useCurrentIdentity } from '../../../components/DataSource/useActivatedUI' import type { PollGunDB } from '../Services' import { PollCardUI } from './Polls' diff --git a/packages/maskbook/src/plugins/RedPacket/UI/RedPacket.tsx b/packages/maskbook/src/plugins/RedPacket/UI/RedPacket.tsx index 4ffc3d7f3129..fe76073f3282 100644 --- a/packages/maskbook/src/plugins/RedPacket/UI/RedPacket.tsx +++ b/packages/maskbook/src/plugins/RedPacket/UI/RedPacket.tsx @@ -15,7 +15,6 @@ import { WalletMessages } from '../../Wallet/messages' import { useAvailabilityComputed } from '../hooks/useAvailabilityComputed' import { formatBalance } from '../../Wallet/formatter' import { TransactionStateType } from '../../../web3/hooks/useTransactionState' -import { useShareLink } from '../../../utils/hooks/useShareLink' import { useChainId, useChainIdValid } from '../../../web3/hooks/useChainState' import { useAccount } from '../../../web3/hooks/useAccount' import ActionButton from '../../../extension/options-page/DashboardComponents/ActionButton' @@ -31,6 +30,7 @@ import { MetaMaskIcon } from '../../../resources/MetaMaskIcon' import Services from '../../../extension/service' import { useTokenDetailed } from '../../../web3/hooks/useTokenDetailed' import { EthereumMessages } from '../../Ethereum/messages' +import { activatedSocialNetworkUI } from '../../../social-network' const useStyles = makeStyles((theme) => createStyles({ @@ -173,7 +173,7 @@ export function RedPacket(props: RedPacketProps) { //#region remote controlled transaction dialog const postLink = usePostLink() - const shareLink = useShareLink( + const shareLink = activatedSocialNetworkUI.utils.getShareLinkURL?.( canClaim ? [ `I just claimed a red packet from @${payload.sender.name}. Follow @realMaskbook (mask.io) to claim red packets.`, diff --git a/packages/maskbook/src/plugins/RedPacket/UI/RedPacketDialog.tsx b/packages/maskbook/src/plugins/RedPacket/UI/RedPacketDialog.tsx index f8989986eea3..3a5572e27691 100644 --- a/packages/maskbook/src/plugins/RedPacket/UI/RedPacketDialog.tsx +++ b/packages/maskbook/src/plugins/RedPacket/UI/RedPacketDialog.tsx @@ -2,7 +2,7 @@ import { useState, useCallback } from 'react' import { DialogContent } from '@material-ui/core' import AbstractTab, { AbstractTabProps } from '../../../extension/options-page/DashboardComponents/AbstractTab' import { RedPacketJSONPayload, DialogTabs } from '../types' -import { editActivatedPostMetadata } from '../../../social-network/ui' +import { editActivatedPostMetadata } from '../../../protocols/typed-message/global-state' import { RedPacketMetaKey } from '../constants' import { useI18N } from '../../../utils/i18n-next-ui' import { RedPacketForm } from './RedPacketForm' @@ -59,7 +59,7 @@ export default function RedPacketDialog(props: RedPacketDialogProps) { return ( - + ) diff --git a/packages/maskbook/src/plugins/RedPacket/UI/RedPacketForm.tsx b/packages/maskbook/src/plugins/RedPacket/UI/RedPacketForm.tsx index cf8b977d6c7f..c051b60f3653 100644 --- a/packages/maskbook/src/plugins/RedPacket/UI/RedPacketForm.tsx +++ b/packages/maskbook/src/plugins/RedPacket/UI/RedPacketForm.tsx @@ -62,7 +62,7 @@ const useStyles = makeStyles((theme) => padding: 12, }, selectShrinkLabel: { - transform: 'translate(17px, -12px) scale(0.75) !important', + transform: 'translate(17px, -10px) scale(0.75) !important', }, inputShrinkLabel: { transform: 'translate(17px, -3px) scale(0.75) !important', diff --git a/packages/maskbook/src/plugins/RedPacket/UI/RedPacketInPost.tsx b/packages/maskbook/src/plugins/RedPacket/UI/RedPacketInPost.tsx index 5ad98c9aebeb..bed6150ad4cb 100644 --- a/packages/maskbook/src/plugins/RedPacket/UI/RedPacketInPost.tsx +++ b/packages/maskbook/src/plugins/RedPacket/UI/RedPacketInPost.tsx @@ -1,9 +1,9 @@ import { useEffect } from 'react' import type { RedPacketJSONPayload, RedPacketRecord } from '../types' import { usePostInfoDetails } from '../../../components/DataSource/usePostInfo' -import { getPostUrl } from '../../../social-network/utils/getPostUrl' import { RedPacket } from './RedPacket' import { RedPacketRPC } from '../messages' +import { activatedSocialNetworkUI } from '../../../social-network' export interface RedPacketInPostProps { payload: RedPacketJSONPayload @@ -14,7 +14,10 @@ export function RedPacketInPost(props: RedPacketInPostProps) { //#region discover red packet const postIdentifier = usePostInfoDetails('postIdentifier') - const fromUrl = postIdentifier && !postIdentifier.isUnknown ? getPostUrl(postIdentifier) : undefined + const fromUrl = + postIdentifier && !postIdentifier.isUnknown + ? activatedSocialNetworkUI.utils.getPostURL?.(postIdentifier)?.toString() + : undefined useEffect(() => { if (!fromUrl) return if (!payload.txid && payload.contract_version !== 1) return diff --git a/packages/maskbook/src/plugins/Trader/UI/trader/DataProviderIcon.tsx b/packages/maskbook/src/plugins/Trader/UI/trader/DataProviderIcon.tsx index 6efad20e856d..ee458c42f921 100644 --- a/packages/maskbook/src/plugins/Trader/UI/trader/DataProviderIcon.tsx +++ b/packages/maskbook/src/plugins/Trader/UI/trader/DataProviderIcon.tsx @@ -37,7 +37,7 @@ export function DataProviderIcon(props: DataProviderIconProps) { return case DataProvider.COIN_MARKET_CAP: return - case DataProvider.UNISWAP: + case DataProvider.UNISWAP_INFO: return default: unreachable(props.provider) diff --git a/packages/maskbook/src/plugins/Trader/UI/trader/Trader.tsx b/packages/maskbook/src/plugins/Trader/UI/trader/Trader.tsx index e3bd2af659b8..cd936814d863 100644 --- a/packages/maskbook/src/plugins/Trader/UI/trader/Trader.tsx +++ b/packages/maskbook/src/plugins/Trader/UI/trader/Trader.tsx @@ -19,7 +19,6 @@ import { TRADE_CONSTANTS } from '../../constants' import { delay } from '../../../../utils/utils' import { TransactionStateType } from '../../../../web3/hooks/useTransactionState' import { useRemoteControlledDialog } from '../../../../utils/hooks/useRemoteControlledDialog' -import { useShareLink } from '../../../../utils/hooks/useShareLink' import { formatBalance } from '../../../Wallet/formatter' import { TradePairViewer } from '../uniswap/TradePairViewer' import { useValueRef } from '../../../../utils/hooks/useValueRef' @@ -27,7 +26,7 @@ import { currentTradeProviderSettings } from '../../settings' import { useTradeCallback } from '../../trader/useTradeCallback' import { useTradeStateComputed } from '../../trader/useTradeStateComputed' import { useTokenBalance } from '../../../../web3/hooks/useTokenBalance' -import { getActivatedUI } from '../../../../social-network/ui' +import { activatedSocialNetworkUI } from '../../../../social-network' import { EthereumMessages } from '../../../Ethereum/messages' import Services from '../../../../extension/service' import { UST } from '../../constants' @@ -35,6 +34,7 @@ import { SelectTokenDialogEvent, WalletMessages } from '../../../Wallet/messages import { useChainId } from '../../../../web3/hooks/useChainState' import { createERC20Token, createEtherToken } from '../../../../web3/helpers' import { PluginTraderRPC } from '../../messages' +import { isTwitter } from '../../../../social-network-adaptor/twitter.com/base' const useStyles = makeStyles((theme) => { return createStyles({ @@ -229,19 +229,21 @@ export function Trader(props: TraderProps) { //#endregion //#region remote controlled transaction dialog - const cashTag = getActivatedUI()?.networkIdentifier === 'twitter.com' ? '$' : '' - const shareLink = useShareLink( - trade && inputToken && outputToken - ? [ - `I just swapped ${formatBalance(trade.inputAmount, inputToken.decimals ?? 0, 6)} ${cashTag}${ - inputToken.symbol - } for ${formatBalance(trade.outputAmount, outputToken.decimals ?? 0, 6)} ${cashTag}${ - outputToken.symbol - }. Follow @realMaskbook (mask.io) to swap cryptocurrencies on Twitter.`, - '#mask_io', - ].join('\n') - : '', - ) + const cashTag = isTwitter(activatedSocialNetworkUI) ? '$' : '' + const shareLink = activatedSocialNetworkUI.utils + .getShareLinkURL?.( + trade && inputToken && outputToken + ? [ + `I just swapped ${formatBalance(trade.inputAmount, inputToken.decimals ?? 0, 6)} ${cashTag}${ + inputToken.symbol + } for ${formatBalance(trade.outputAmount, outputToken.decimals ?? 0, 6)} ${cashTag}${ + outputToken.symbol + }. Follow @realMaskbook (mask.io) to swap cryptocurrencies on Twitter.`, + '#mask_io', + ].join('\n') + : '', + ) + .toString() // close the transaction dialog const [_, setTransactionDialogOpen] = useRemoteControlledDialog( diff --git a/packages/maskbook/src/plugins/Trader/UI/trending/CoinMarketPanel.tsx b/packages/maskbook/src/plugins/Trader/UI/trending/CoinMarketPanel.tsx index cef4296eda85..9b30581d17eb 100644 --- a/packages/maskbook/src/plugins/Trader/UI/trending/CoinMarketPanel.tsx +++ b/packages/maskbook/src/plugins/Trader/UI/trending/CoinMarketPanel.tsx @@ -1,5 +1,5 @@ import { makeStyles, createStyles } from '@material-ui/core' -import { DataProvider, Trending } from '../../types' +import type { DataProvider, Trending } from '../../types' import { CoinMarketTable } from './CoinMarketTable' import { CoinMetadataTable } from './CoinMetadataTable' @@ -24,9 +24,7 @@ export function CoinMarketPanel(props: CoinMarketPanelProps) {

- {dataProvider !== DataProvider.UNISWAP ? ( - - ) : null} +
) } diff --git a/packages/maskbook/src/plugins/Trader/UI/trending/CoinMarketTable.tsx b/packages/maskbook/src/plugins/Trader/UI/trending/CoinMarketTable.tsx index a07dfe7bb9bf..c285a13bfb04 100644 --- a/packages/maskbook/src/plugins/Trader/UI/trending/CoinMarketTable.tsx +++ b/packages/maskbook/src/plugins/Trader/UI/trending/CoinMarketTable.tsx @@ -1,16 +1,16 @@ import { - makeStyles, createStyles, - TableContainer, + makeStyles, Paper, Table, - TableRow, + TableBody, TableCell, + TableContainer, TableHead, - TableBody, + TableRow, Typography, } from '@material-ui/core' -import type { DataProvider, Trending } from '../../types' +import { DataProvider, Trending } from '../../types' import { formatCurrency } from '../../../Wallet/formatter' const useStyles = makeStyles((theme) => @@ -43,7 +43,7 @@ export interface CoinMarketTableProps { } export function CoinMarketTable(props: CoinMarketTableProps) { - const { trending } = props + const { trending, dataProvider } = props const classes = useStyles() return ( @@ -51,42 +51,54 @@ export function CoinMarketTable(props: CoinMarketTableProps) { - - - Market Cap - - + {dataProvider !== DataProvider.UNISWAP_INFO ? ( + + + Market Cap + + + ) : null} Volume (24h) - - - Circulating Supply - - - - - Total Supply - - + {dataProvider !== DataProvider.UNISWAP_INFO ? ( + <> + + + Circulating Supply + + + + + Total Supply + + + + ) : null} - - {formatCurrency(trending.market?.market_cap ?? 0, '$')} USD - + {dataProvider !== DataProvider.UNISWAP_INFO ? ( + + {formatCurrency(trending.market?.market_cap ?? 0, '$')} USD + + ) : null} {formatCurrency(trending.market?.total_volume ?? 0, '$')} USD - - {formatCurrency(trending.market?.circulating_supply ?? 0, '$')} USD - - - {formatCurrency(trending.market?.total_supply ?? 0, '$')} USD - + {dataProvider !== DataProvider.UNISWAP_INFO ? ( + <> + + {formatCurrency(trending.market?.circulating_supply ?? 0, '$')} USD + + + {formatCurrency(trending.market?.total_supply ?? 0, '$')} USD + + + ) : null}
diff --git a/packages/maskbook/src/plugins/Trader/UI/trending/CoinMenu.tsx b/packages/maskbook/src/plugins/Trader/UI/trending/CoinMenu.tsx index 70a98d6b376f..03d5b53bf053 100644 --- a/packages/maskbook/src/plugins/Trader/UI/trending/CoinMenu.tsx +++ b/packages/maskbook/src/plugins/Trader/UI/trending/CoinMenu.tsx @@ -41,7 +41,11 @@ export function CoinMenu(props: CoinMenuProps) { return ( <>
{children}
- + {options.map((x, i) => ( onSelect(x)}> diff --git a/packages/maskbook/src/plugins/Trader/UI/trending/CoinSaftyAlert.tsx b/packages/maskbook/src/plugins/Trader/UI/trending/CoinSaftyAlert.tsx new file mode 100644 index 000000000000..fa1238297aa0 --- /dev/null +++ b/packages/maskbook/src/plugins/Trader/UI/trending/CoinSaftyAlert.tsx @@ -0,0 +1,66 @@ +import { Alert, AlertTitle, Box, Button, createStyles, Link, makeStyles, Paper } from '@material-ui/core' +import type { Coin } from '../../types' +import { useI18N } from '../../../../utils/i18n-next-ui' +import { useApprovedTokens } from '../../trending/useApprovedTokens' +import { resolveTokenLinkOnEtherscan } from '../../../../web3/pipes' +import { ChainId, EthereumTokenType } from '../../../../web3/types' + +const useStyles = makeStyles((theme) => { + return createStyles({ + root: { + padding: theme.spacing(0, 2, 2, 2), + }, + approve: { + marginLeft: theme.spacing(1), + whiteSpace: 'nowrap', + backgroundColor: theme.palette.error.main, + color: theme.palette.error.contrastText, + '&:hover': { + backgroundColor: theme.palette.error.main, + }, + }, + }) +}) + +export interface CoinSaftyAlertProps { + coin: Coin +} + +export function CoinSaftyAlert(props: CoinSaftyAlertProps) { + const { coin } = props + + const { t } = useI18N() + const classes = useStyles() + const { approvedTokens, onApprove } = useApprovedTokens(coin.eth_address) + + if (!coin.eth_address) return null + if (approvedTokens.some((address) => address === coin.eth_address)) return null + + return ( + + + Token Safety Alert + Anyone can create and name any ERC20 token on Ethereum, including creating fake versions of existing + tokens and tokens that claim to represent projects that do not have a token. Similar to Etherscan, this + site automatically tracks analytics for all ERC20 tokens independent of token integrity. Please do your + own research before interacting with any ERC20 token. + + + View on Etherscan + + + + + + ) +} diff --git a/packages/maskbook/src/plugins/Trader/UI/trending/LBPPanel.tsx b/packages/maskbook/src/plugins/Trader/UI/trending/LBPPanel.tsx index f305cc88acc0..04547820f988 100644 --- a/packages/maskbook/src/plugins/Trader/UI/trending/LBPPanel.tsx +++ b/packages/maskbook/src/plugins/Trader/UI/trending/LBPPanel.tsx @@ -32,6 +32,11 @@ const useStyles = makeStyles((theme: Theme) => margin: theme.spacing(1, 0), padding: theme.spacing(0, 2.5), }, + placeholder: { + color: theme.palette.text.secondary, + padding: theme.spacing(2, 2, 0), + textAlign: 'center', + }, connect: { padding: theme.spacing(0, 2.5), display: 'flex', @@ -73,6 +78,15 @@ export function LBPPanel(props: LBPPanelProps) { 100, ) + if (!pools.length) + return ( +
+
+ No pools found. +
+
+ ) + return (
@@ -99,36 +113,31 @@ export function LBPPanel(props: LBPPanelProps) { } />
- {pools.length ? ( - <> - - Solid blue line illustrates the historical price of {token.symbol ?? 'Token'} on the{' '} - {token.symbol ?? 'Token'}'s LBP. The price could continue to go down if no one buys. Please make - your investment decision wisely. - - - - - What's LBP? - - ,{' '} - - Tutorial - {' '} - and{' '} - - {token.symbol} LBP Pool in Balancer - - . - - - ) : null} + + Solid blue line illustrates the historical price of {token.symbol ?? 'Token'} on the{' '} + {token.symbol ?? 'Token'}'s LBP. The price could continue to go down if no one buys. Please make your + investment decision wisely. + + + + What's LBP? + + ,{' '} + + Tutorial + {' '} + and{' '} + + {token.symbol} LBP Pool in Balancer + + . +