From cb805e420e7f1c5c44395ead0b106d29107a31ec Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Tue, 11 Feb 2025 14:27:39 +0100 Subject: [PATCH 01/38] checker (wip) --- README.md | 4 +- SECURITY.md | 2 +- build/after-pack.js | 2 +- docs/DEVELOPING.md | 8 +- docs/RELEASE_PROCESS.md | 8 +- electron-builder.yml | 6 +- main/{station-config.js => config.js} | 0 main/consts.js | 20 ++--- main/core.js | 4 +- main/index.js | 8 +- main/ipc.js | 66 +++++++-------- main/preload.js | 82 +++++++++---------- main/telemetry.js | 2 +- main/tray.js | 4 +- main/ui.js | 2 +- main/updater.js | 2 +- main/utils.js | 4 +- main/wallet-backend.js | 2 +- main/wallet.js | 2 +- package.json | 10 +-- renderer/index.html | 2 +- renderer/src/App.tsx | 2 +- renderer/src/components/Onboarding.tsx | 2 +- renderer/src/components/RebrandBanner.tsx | 2 +- renderer/src/components/UpdateBanner.tsx | 2 +- renderer/src/components/WalletModal.tsx | 2 +- renderer/src/components/WalletWidget.tsx | 2 +- .../{StationActivity.tsx => Activity.tsx} | 2 +- .../hooks/{StationRewards.tsx => Rewards.tsx} | 4 +- .../hooks/{StationModules.tsx => Subnets.tsx} | 0 .../hooks/{StationWallet.tsx => Wallet.tsx} | 2 +- .../lib/{station-config.tsx => config.tsx} | 0 renderer/src/lib/utils.ts | 2 +- renderer/src/pages/dashboard/ActivityInfo.tsx | 2 +- renderer/src/pages/dashboard/Chart.tsx | 2 +- .../src/pages/dashboard/ChartController.tsx | 2 +- renderer/src/pages/dashboard/Dashboard.tsx | 2 +- renderer/src/pages/modules/ModuleCard.tsx | 4 +- renderer/src/pages/modules/Modules.tsx | 2 +- renderer/src/pages/onboarding/Onboarding.tsx | 2 +- renderer/src/pages/settings/Settings.tsx | 2 +- renderer/src/pages/wallet/BalanceControl.tsx | 2 +- renderer/src/pages/wallet/ConfirmTransfer.tsx | 2 +- .../pages/wallet/DestinationAddressForm.tsx | 2 +- .../wallet/EditDestinationAddressForm.tsx | 2 +- renderer/src/pages/wallet/GridCanvas.tsx | 2 +- renderer/src/pages/wallet/TransferForm.tsx | 2 +- renderer/src/pages/wallet/TransferWrapper.tsx | 4 +- renderer/src/pages/wallet/Wallet.tsx | 2 +- renderer/src/test/dashboard.test.tsx | 8 +- renderer/src/test/onboarding.test.tsx | 2 +- renderer/src/test/settings.test.tsx | 2 +- renderer/src/test/wallet-modal.test.tsx | 8 +- renderer/src/test/wallet.test.tsx | 2 +- renderer/src/typings.ts | 12 +-- 55 files changed, 166 insertions(+), 166 deletions(-) rename main/{station-config.js => config.js} (100%) rename renderer/src/hooks/{StationActivity.tsx => Activity.tsx} (97%) rename renderer/src/hooks/{StationRewards.tsx => Rewards.tsx} (98%) rename renderer/src/hooks/{StationModules.tsx => Subnets.tsx} (100%) rename renderer/src/hooks/{StationWallet.tsx => Wallet.tsx} (99%) rename renderer/src/lib/{station-config.tsx => config.tsx} (100%) diff --git a/README.md b/README.md index 90a92355f..51a4a62a9 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](https://protocol.ai/) [![](https://img.shields.io/badge/project-Filecoin-blue.svg?style=flat-square)](https://filecoin.io/) -[![ci](https://github.com/filecoin-station/desktop/actions/workflows/ci.yml/badge.svg)](https://github.com/filecoin-station/desktop/actions/workflows/ci.yml) +[![ci](https://github.com/CheckerNetwork/app/actions/workflows/ci.yml/badge.svg)](https://github.com/CheckerNetwork/app/actions/workflows/ci.yml) Filecoin Station is a desktop app that connects your computer’s idle resources to the Filecoin network and rewards you with Filecoin. Taking part is simple, @@ -12,7 +12,7 @@ just launch the app and start earning. Learn more at ## Install Release notes and all versions of Filecoin Station can be found on the -[releases page](https://github.com/filecoin-station/desktop/releases). +[releases page](https://github.com/CheckerNetwork/app/releases). Each release has packages for desktop platforms: diff --git a/SECURITY.md b/SECURITY.md index b259c68d2..87cf5f80f 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -33,4 +33,4 @@ as a security vulnerability, . ## Reporting a non security bug For non-security bugs, please simply file a GitHub -[issue](https://github.com/filecoin-station/desktop/issues/new). +[issue](https://github.com/CheckerNetwork/app/issues/new). diff --git a/build/after-pack.js b/build/after-pack.js index a122ab831..9cbe7e854 100644 --- a/build/after-pack.js +++ b/build/after-pack.js @@ -29,7 +29,7 @@ exports.default = async function (context) { { cwd: join( context.appOutDir, - 'Filecoin Station.app', + 'Checker.app', 'Contents', 'Resources', 'core' diff --git a/docs/DEVELOPING.md b/docs/DEVELOPING.md index 5b7ae9a59..ed6421fbe 100644 --- a/docs/DEVELOPING.md +++ b/docs/DEVELOPING.md @@ -6,7 +6,7 @@ ```mermaid graph - fil-stat-repo(github.com/filecoin-station/desktop) --> fil-stat-main(Station main process) + fil-stat-repo(github.com/CheckerNetwork/app) --> fil-stat-main(Station main process) fil-stat-repo --> fil-stat-webui(Station WebUI) saturn-l2-repo(https://github.com/filecoin-project/saturn-l2) @@ -23,7 +23,7 @@ graph Repositories: -- https://github.com/filecoin-station/desktop +- https://github.com/CheckerNetwork/app - https://github.com/filecoin-saturn/L2-node - https://github.com/filecoin-project/saturn-webui @@ -32,8 +32,8 @@ Repositories: 1. `filecoin-project/saturn-webui` publishes a new release with WebUI assets 2. `filecoin-saturn/L2-node` is updated to use the new `saturn-webui` version 3. `filecoin-saturn/L2-node` publishes a new release -4. `filecoin-station/desktop` is updated to use the new `L2-node` version -5. `filecoin-station/desktop` publishes a new release +4. `CheckerNetwork/app` is updated to use the new `L2-node` version +5. `CheckerNetwork/app` publishes a new release ## Development workflow diff --git a/docs/RELEASE_PROCESS.md b/docs/RELEASE_PROCESS.md index 275e9641f..57d3cd4b0 100644 --- a/docs/RELEASE_PROCESS.md +++ b/docs/RELEASE_PROCESS.md @@ -38,12 +38,12 @@ modified flow from ``` 1. Wait for GitHub Actions CI to upload the binaries to a draft release - [here](https://github.com/filecoin-station/desktop/releases) (a new + [here](https://github.com/CheckerNetwork/app/releases) (a new one will be created if you haven't drafted one). 1. Review and publish the release draft. - Once a release is published, users will receive the app update - The `latest.yml, latest-mac.yml, latest-linux.yml` files attached to - [/releases](https://github.com/filecoin-station/desktop/releases) + [/releases](https://github.com/CheckerNetwork/app/releases) are used by the desktop app to determine when an app update is available. 1. Done! @@ -56,12 +56,12 @@ modified flow from 4. Publish local changes and the tag to the GitHub repo: `git push && git push origin vA.B.C`. 5. Wait for GitHub Actions CI to upload the binaries to a draft release - [here](https://github.com/filecoin-station/desktop/releases) (a new + [here](https://github.com/CheckerNetwork/app/releases) (a new one will be created if you haven't drafted one). 6. Review and publish the release draft. - Once a release is published, users will receive the app update - The `latest.yml, latest-mac.yml, latest-linux.yml` files attached to - [/releases](https://github.com/filecoin-station/desktop/releases) + [/releases](https://github.com/CheckerNetwork/app/releases) are used by the desktop app to determine when an app update is available. 7. Done! diff --git a/electron-builder.yml b/electron-builder.yml index 3ccf8c83c..2b8ce41de 100644 --- a/electron-builder.yml +++ b/electron-builder.yml @@ -1,4 +1,4 @@ -appId: io.filecoin.station +appId: network.checker.app generateUpdatesFilesForAllChannels: true extraMetadata: @@ -58,8 +58,8 @@ nsis: linux: artifactName: ${name}-${os}-${arch}.${ext} - executableName: filecoin-station - icon: filecoin-station + executableName: checker + icon: checker category: Network;FileTransfer;P2P synopsis: A desktop client for Filecoin Retrieval Markets maintainer: changeme@example.com diff --git a/main/station-config.js b/main/config.js similarity index 100% rename from main/station-config.js rename to main/config.js diff --git a/main/consts.js b/main/consts.js index fb8677f4f..88d6ee766 100644 --- a/main/consts.js +++ b/main/consts.js @@ -9,9 +9,9 @@ const assert = require('assert') const { getBuildVersion } = require('./build-version') const appIDs = { - darwin: 'app.filstation.desktop', - win32: 'Filecoin Station Desktop', - linux: 'filecoin-station-desktop' + darwin: 'network.checker.app', + win32: 'Checker', + linux: 'checker' } module.exports = Object.freeze({ @@ -21,7 +21,7 @@ module.exports = Object.freeze({ IS_MAC: os.platform() === 'darwin', IS_WIN: os.platform() === 'win32', IS_APPIMAGE: typeof process.env.APPIMAGE !== 'undefined', - STATION_VERSION: packageJson.version, + CHECKER_VERSION: packageJson.version, BUILD_VERSION: getBuildVersion(packageJson), ELECTRON_VERSION: process.versions.electron @@ -30,8 +30,8 @@ module.exports = Object.freeze({ // Replace with `app.get('localUserData')` after this PR is landed & released: // https://github.com/electron/electron/pull/34337 function getCacheRoot () { - if (process.env.STATION_ROOT) { - return path.join(process.env.STATION_ROOT, 'cache') + if (process.env.CHECKER_ROOT) { + return path.join(process.env.CHECKER_ROOT, 'cache') } const platform = os.platform() @@ -55,8 +55,8 @@ function getCacheRoot () { } function getStateRoot () { - if (process.env.STATION_ROOT) { - return path.join(process.env.STATION_ROOT, 'state') + if (process.env.CHECKER_ROOT) { + return path.join(process.env.CHECKER_ROOT, 'state') } const platform = os.platform() @@ -87,8 +87,8 @@ function getStateRoot () { // Used for migrations function getLegacyCacheHome () { - if (process.env.STATION_ROOT) { - return path.join(process.env.STATION_ROOT, 'cache') + if (process.env.CHECKER_ROOT) { + return path.join(process.env.CHECKER_ROOT, 'cache') } const platform = os.platform() diff --git a/main/core.js b/main/core.js index 8fb1e0c7b..a5cb9551d 100644 --- a/main/core.js +++ b/main/core.js @@ -37,7 +37,7 @@ let totalJobsCompleted = 0 async function setup (ctx) { ctx.saveModuleLogsAs = async () => { const opts = { - defaultPath: `station-modules-${(new Date()).getTime()}.log` + defaultPath: `checker-modules-${(new Date()).getTime()}.log` } // The dialog might not show if the UI is hidden ctx.showUI() @@ -67,7 +67,7 @@ function maybeReportErrorToSentry (err, scopeFn) { if (now - lastCrashReportedAt < 4 /* HOURS */ * 3600_000) return lastCrashReportedAt = now log.error( - 'Reporting the problem to Sentry for inspection by the Station team.' + 'Reporting the problem to Sentry for inspection by the Checker team.' ) Sentry.captureException(err, scopeFn) } diff --git a/main/index.js b/main/index.js index 32b5480a8..73ea62687 100644 --- a/main/index.js +++ b/main/index.js @@ -14,8 +14,8 @@ const log = electronLog.scope('main') // store. // https://www.npmjs.com/package/electron-store // https://www.electronjs.org/docs/latest/api/app#appgetpathname -if (process.env.STATION_ROOT) { - app.setPath('userData', path.join(process.env.STATION_ROOT, 'user-data')) +if (process.env.CHECKER_ROOT) { + app.setPath('userData', path.join(process.env.CHECKER_ROOT, 'user-data')) // Also set 'localUserData' after this PR is landed & released: // We are using localUserData for Saturn L2 cache @@ -65,7 +65,7 @@ if (app.runningUnderARM64Translation) { } // Expose additional metadata for Electron preload script -process.env.STATION_BUILD_VERSION = BUILD_VERSION +process.env.CHECKER_BUILD_VERSION = BUILD_VERSION function handleError (/** @type {any} */ err) { Sentry.captureException(err) @@ -83,7 +83,7 @@ process.on('unhandledRejection', handleError) // appUserModelID // See https://www.electronjs.org/docs/tutorial/notifications#windows if (process.platform === 'win32') { - app.setAppUserModelId('io.filecoin.station') + app.setAppUserModelId('network.checker.app') } // Only one instance can run at a time diff --git a/main/ipc.js b/main/ipc.js index 320d36645..b6288e74e 100644 --- a/main/ipc.js +++ b/main/ipc.js @@ -2,97 +2,97 @@ const { ipcMain } = require('electron') -const stationConfig = require('./station-config') +const config = require('./config') const wallet = require('./wallet') /** @typedef {import('./typings').Context} Context */ const ipcMainEvents = Object.freeze({ - ACTIVITY_LOGGED: 'station:activity-logged', - JOB_STATS_UPDATED: 'station:job-stats-updated', + ACTIVITY_LOGGED: 'checker:activity-logged', + JOB_STATS_UPDATED: 'checker:job-stats-updated', - UPDATE_CHECK_STARTED: 'station:update-check:started', - UPDATE_CHECK_FINISHED: 'station:update-check:finished', - READY_TO_UPDATE: 'station:ready-to-update', + UPDATE_CHECK_STARTED: 'checker:update-check:started', + UPDATE_CHECK_FINISHED: 'checker:update-check:finished', + READY_TO_UPDATE: 'checker:ready-to-update', - TRANSACTION_UPDATE: 'station:transaction-update', - BALANCE_UPDATE: 'station:wallet-balance-update', - SCHEDULED_REWARDS_UPDATE: 'station:scheduled-rewards-update' + TRANSACTION_UPDATE: 'checker:transaction-update', + BALANCE_UPDATE: 'checker:wallet-balance-update', + SCHEDULED_REWARDS_UPDATE: 'checker:scheduled-rewards-update' }) function setupIpcMain (/** @type {Context} */ ctx) { // Station-wide config ipcMain.handle( - 'station:getOnboardingCompleted', - stationConfig.getOnboardingCompleted + 'checker:getOnboardingCompleted', + config.getOnboardingCompleted ) ipcMain.handle( - 'station:setOnboardingCompleted', - (_event) => stationConfig.setOnboardingCompleted() + 'checker:setOnboardingCompleted', + (_event) => config.setOnboardingCompleted() ) // Wallet-wide config - ipcMain.handle('station:getStationWalletAddress', wallet.getAddress) + ipcMain.handle('checker:getWalletAddress', wallet.getAddress) ipcMain.handle( - 'station:getDestinationWalletAddress', - stationConfig.getDestinationWalletAddress + 'checker:getDestinationWalletAddress', + config.getDestinationWalletAddress ) ipcMain.handle( - 'station:setDestinationWalletAddress', - (_event, address) => stationConfig.setDestinationWalletAddress(address) + 'checker:setDestinationWalletAddress', + (_event, address) => config.setDestinationWalletAddress(address) ) - ipcMain.handle('station:getStationWalletBalance', wallet.getBalance) + ipcMain.handle('checker:getWalletBalance', wallet.getBalance) ipcMain.handle( - 'station:getScheduledRewards', + 'checker:getScheduledRewards', ctx.getScheduledRewardsForAddress ) ipcMain.handle( - 'station:getStationWalletTransactionsHistory', + 'checker:getWalletTransactionsHistory', wallet.listTransactions ) ipcMain.handle( - 'station:transferAllFundsToDestinationWallet', + 'checker:transferAllFundsToDestinationWallet', (_event, _args) => wallet.transferAllFundsToDestinationWallet()) ipcMain.handle( - 'station:getActivities', + 'checker:getActivities', (_event, _args) => ctx.getActivities()) ipcMain.handle( - 'station:getTotalJobsCompleted', + 'checker:getTotalJobsCompleted', (_event, _args) => ctx.getTotalJobsCompleted()) ipcMain.handle( - 'station:restartToUpdate', + 'checker:restartToUpdate', (_event, _args) => ctx.restartToUpdate() ) ipcMain.handle( - 'station:openReleaseNotes', + 'checker:openReleaseNotes', (_event) => ctx.openReleaseNotes() ) ipcMain.handle( - 'station:getUpdaterStatus', + 'checker:getUpdaterStatus', (_events, _args) => ctx.getUpdaterStatus() ) ipcMain.handle( - 'station:openExternalURL', + 'checker:openExternalURL', (_events, url) => ctx.openExternalURL(url) ) ipcMain.handle( - 'station:toggleOpenAtLogin', + 'checker:toggleOpenAtLogin', (_events) => ctx.toggleOpenAtLogin() ) ipcMain.handle( - 'station:isOpenAtLogin', + 'checker:isOpenAtLogin', (_events) => ctx.isOpenAtLogin() ) ipcMain.handle( - 'station:exportSeedPhrase', + 'checker:exportSeedPhrase', (_events) => ctx.exportSeedPhrase() ) ipcMain.handle( - 'station:saveModuleLogsAs', + 'checker:saveModuleLogsAs', (_events) => ctx.saveModuleLogsAs() ) ipcMain.handle( - 'station:checkForUpdates', + 'checker:checkForUpdates', (_events) => ctx.manualCheckForUpdates() ) } diff --git a/main/preload.js b/main/preload.js index 44829dc91..f4711c27e 100644 --- a/main/preload.js +++ b/main/preload.js @@ -10,80 +10,80 @@ const { contextBridge, ipcRenderer } = require('electron') contextBridge.exposeInMainWorld('electron', { - stationBuildVersion: process.env.STATION_BUILD_VERSION, + checkerBuildVersion: process.env.CHECKER_BUILD_VERSION, - getActivities: () => ipcRenderer.invoke('station:getActivities'), + getActivities: () => ipcRenderer.invoke('checker:getActivities'), getTotalJobsCompleted: () => - ipcRenderer.invoke('station:getTotalJobsCompleted'), - getUpdaterStatus: () => ipcRenderer.invoke('station:getUpdaterStatus'), - restartToUpdate: () => ipcRenderer.invoke('station:restartToUpdate'), - openReleaseNotes: () => ipcRenderer.invoke('station:openReleaseNotes'), + ipcRenderer.invoke('checker:getTotalJobsCompleted'), + getUpdaterStatus: () => ipcRenderer.invoke('checker:getUpdaterStatus'), + restartToUpdate: () => ipcRenderer.invoke('checker:restartToUpdate'), + openReleaseNotes: () => ipcRenderer.invoke('checker:openReleaseNotes'), getScheduledRewards: () => - ipcRenderer.invoke('station:getScheduledRewards'), + ipcRenderer.invoke('checker:getScheduledRewards'), - stationConfig: { + config: { getOnboardingCompleted: () => - ipcRenderer.invoke('station:getOnboardingCompleted'), + ipcRenderer.invoke('checker:getOnboardingCompleted'), setOnboardingCompleted: () => - ipcRenderer.invoke('station:setOnboardingCompleted'), - getStationWalletAddress: () => - ipcRenderer.invoke('station:getStationWalletAddress'), + ipcRenderer.invoke('checker:setOnboardingCompleted'), + getWalletAddress: () => + ipcRenderer.invoke('checker:getWalletAddress'), getDestinationWalletAddress: () => - ipcRenderer.invoke('station:getDestinationWalletAddress'), + ipcRenderer.invoke('checker:getDestinationWalletAddress'), setDestinationWalletAddress: (/** @type {string | undefined} */ address) => - ipcRenderer.invoke('station:setDestinationWalletAddress', address), - getStationWalletBalance: () => - ipcRenderer.invoke('station:getStationWalletBalance'), - getStationWalletTransactionsHistory: () => - ipcRenderer.invoke('station:getStationWalletTransactionsHistory'), + ipcRenderer.invoke('checker:setDestinationWalletAddress', address), + getWalletBalance: () => + ipcRenderer.invoke('checker:getWalletBalance'), + getWalletTransactionsHistory: () => + ipcRenderer.invoke('checker:getWalletTransactionsHistory'), transferAllFundsToDestinationWallet: () => - ipcRenderer.invoke('station:transferAllFundsToDestinationWallet'), + ipcRenderer.invoke('checker:transferAllFundsToDestinationWallet'), openExternalURL: (/** @type {string } */ url) => - ipcRenderer.invoke('station:openExternalURL', url), + ipcRenderer.invoke('checker:openExternalURL', url), getScheduledRewards: () => - ipcRenderer.invoke('station:getScheduledRewards'), + ipcRenderer.invoke('checker:getScheduledRewards'), toggleOpenAtLogin: () => - ipcRenderer.invoke('station:toggleOpenAtLogin'), - isOpenAtLogin: () => ipcRenderer.invoke('station:isOpenAtLogin'), - exportSeedPhrase: () => ipcRenderer.invoke('station:exportSeedPhrase'), - saveModuleLogsAs: () => ipcRenderer.invoke('station:saveModuleLogsAs'), - checkForUpdates: () => ipcRenderer.invoke('station:checkForUpdates') + ipcRenderer.invoke('checker:toggleOpenAtLogin'), + isOpenAtLogin: () => ipcRenderer.invoke('checker:isOpenAtLogin'), + exportSeedPhrase: () => ipcRenderer.invoke('checker:exportSeedPhrase'), + saveModuleLogsAs: () => ipcRenderer.invoke('checker:saveModuleLogsAs'), + checkForUpdates: () => ipcRenderer.invoke('checker:checkForUpdates') }, - stationEvents: { + events: { onActivityLogged: (/** @type {(value: Activity) => void} */ callback) => { /** @type {(event: IpcRendererEvent, ...args: any[]) => void} */ const listener = (_event, activities) => callback(activities) - ipcRenderer.on('station:activity-logged', listener) + ipcRenderer.on('checker:activity-logged', listener) return () => - ipcRenderer.removeListener('station:activity-logged', listener) + ipcRenderer.removeListener('checker:activity-logged', listener) }, onJobProcessed: (/** @type {(value: number) => void} */ callback) => { /** @type {(event: IpcRendererEvent, ...args: any[]) => void} */ const listener = (_event, totalJobCount) => callback(totalJobCount) - ipcRenderer.on('station:job-stats-updated', listener) + ipcRenderer.on('checker:job-stats-updated', listener) return () => - ipcRenderer.removeListener('station:job-stats-updated', listener) + ipcRenderer.removeListener('checker:job-stats-updated', listener) }, onEarningsChanged: (/** @type {(value: number) => void} */ callback) => { /** @type {(event: IpcRendererEvent, ...args: any[]) => void} */ const listener = (_event, totalEarnings) => callback(totalEarnings) - ipcRenderer.on('station:earnings-counter', listener) + ipcRenderer.on('checker:earnings-counter', listener) return () => - ipcRenderer.removeListener('station:earnings-counter', listener) + ipcRenderer.removeListener('checker:earnings-counter', listener) }, onReadyToUpdate: (/** @type {() => void} */ callback) => { const listener = () => callback() - ipcRenderer.on('station:ready-to-update', listener) + ipcRenderer.on('checker:ready-to-update', listener) return () => - ipcRenderer.removeListener('station:ready-to-update', listener) + ipcRenderer.removeListener('checker:ready-to-update', listener) }, onBalanceUpdate: (/** @type {(value: string) => void} */ callback) => { /** @type {(event: IpcRendererEvent, ...args: any[]) => void} */ const listener = (_event, balance) => callback(balance) - ipcRenderer.on('station:wallet-balance-update', listener) + ipcRenderer.on('checker:wallet-balance-update', listener) return () => - ipcRenderer.removeListener('station:wallet-balance-update', listener) + ipcRenderer.removeListener('checker:wallet-balance-update', listener) }, onTransactionUpdate: ( /** @type { @@ -93,9 +93,9 @@ contextBridge.exposeInMainWorld('electron', { ) => { /** @type {(event: IpcRendererEvent, ...args: any[]) => void} */ const listener = (_event, transactions) => callback(transactions) - ipcRenderer.on('station:transaction-update', listener) + ipcRenderer.on('checker:transaction-update', listener) return () => - ipcRenderer.removeListener('station:transaction-update', listener) + ipcRenderer.removeListener('checker:transaction-update', listener) }, onScheduledRewardsUpdate: ( @@ -103,9 +103,9 @@ contextBridge.exposeInMainWorld('electron', { ) => { /** @type {(event: IpcRendererEvent, ...args: any[]) => void} */ const listener = (_event, balance) => callback(balance) - ipcRenderer.on('station:scheduled-rewards-update', listener) + ipcRenderer.on('checker:scheduled-rewards-update', listener) return () => - ipcRenderer.removeListener('station:scheduled-rewards-update', listener) + ipcRenderer.removeListener('checker:scheduled-rewards-update', listener) } } }) diff --git a/main/telemetry.js b/main/telemetry.js index c12d258bd..2e9e16f6d 100644 --- a/main/telemetry.js +++ b/main/telemetry.js @@ -3,7 +3,7 @@ const { app } = require('electron') const { InfluxDB, Point } = require('@influxdata/influxdb-client') const { createHash } = require('node:crypto') -const { getDestinationWalletAddress } = require('./station-config') +const { getDestinationWalletAddress } = require('./config') const wallet = require('./wallet') const Sentry = require('@sentry/node') const { platform, arch } = require('node:os') diff --git a/main/tray.js b/main/tray.js index c95aa27fd..2add62a27 100644 --- a/main/tray.js +++ b/main/tray.js @@ -1,6 +1,6 @@ 'use strict' -const { IS_MAC, STATION_VERSION } = require('./consts') +const { IS_MAC, CHECKER_VERSION } = require('./consts') const { Menu, Tray, app, ipcMain, nativeImage } = require('electron') const { ipcMainEvents } = require('./ipc') const path = require('path') @@ -48,7 +48,7 @@ function getTrayIcon (readyToUpdate, isOnline) { const createContextMenu = (/** @type {Context} */ ctx) => { const contextMenu = Menu.buildFromTemplate([ { - label: `Filecoin Station v${STATION_VERSION}`, + label: `Filecoin Station v${CHECKER_VERSION}`, enabled: false }, { diff --git a/main/ui.js b/main/ui.js index 8a8464994..e9fb1c246 100644 --- a/main/ui.js +++ b/main/ui.js @@ -8,7 +8,7 @@ const { getTrayOperationExplained, setTrayOperationExplained, getOnboardingCompleted -} = require('./station-config') +} = require('./config') const { showDialogSync } = require('./dialog') const wallet = require('./wallet') diff --git a/main/updater.js b/main/updater.js index 31196137c..0599819db 100644 --- a/main/updater.js +++ b/main/updater.js @@ -156,7 +156,7 @@ function onUpdateAvailable ({ version /*, releaseNotes */ }) { function openReleaseNotes () { const version = nextVersion ? `v${nextVersion}` : 'latest' - shell.openExternal(`https://github.com/filecoin-station/desktop/releases/${version}`) + shell.openExternal(`https://github.com/CheckerNetwork/app/releases/${version}`) } /** diff --git a/main/utils.js b/main/utils.js index 9cfff5ba7..f6eaed98a 100644 --- a/main/utils.js +++ b/main/utils.js @@ -17,9 +17,9 @@ function formatTokenValue (input) { const allowedURLs = [ 'https://filspark.com/', - 'https://github.com/filecoin-station/voyager', + 'https://github.com/CheckerNetwork/voyager', 'https://filstation.app/', - 'https://github.com/filecoin-station/spark', + 'https://github.com/CheckerNetwork/spark', 'https://beryx.io', 'https://pl-strflt.notion.site/Station-Terms-Conditions-e97da76bb89f49e280c2897aebe4c41f?pvs=4', 'https://checker.network', diff --git a/main/wallet-backend.js b/main/wallet-backend.js index f4ae2be78..732569781 100644 --- a/main/wallet-backend.js +++ b/main/wallet-backend.js @@ -104,7 +104,7 @@ class WalletBackend { * @returns {Promise} */ async getSeedPhrase () { - const service = 'filecoin-station-wallet-0x' + const service = 'checker-wallet-0x' let seed if (!this.disableKeytar) { log.info('Reading the seed phrase from the keychain...') diff --git a/main/wallet.js b/main/wallet.js index 4dddf7322..753c2117c 100644 --- a/main/wallet.js +++ b/main/wallet.js @@ -2,7 +2,7 @@ const electronLog = require('electron-log') const assert = require('assert') -const { getDestinationWalletAddress } = require('./station-config') +const { getDestinationWalletAddress } = require('./config') const timers = require('node:timers/promises') const { format } = require('node:util') const Store = require('electron-store') diff --git a/package.json b/package.json index 1426b620c..648fc03cf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "filecoin-station", - "productName": "Filecoin Station", + "name": "checker-app", + "productName": "Checker", "private": true, "version": "2.3.14", "description": "Desktop application for Filecoin Retrieval Markets", @@ -27,7 +27,7 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/filecoin-station/desktop.git" + "url": "git+https://github.com/CheckerNetwork/app.git" }, "keywords": [ "filecoin" @@ -35,9 +35,9 @@ "author": "Protocol Labs", "license": "(Apache-2.0 AND MIT)", "bugs": { - "url": "https://github.com/filecoin-station/desktop/issues" + "url": "https://github.com/CheckerNetwork/app/issues" }, - "homepage": "https://github.com/filecoin-station/desktop#readme", + "homepage": "https://github.com/CheckerNetwork/app#readme", "dependencies": { "@filecoin-station/core": "^21.2.5", "@filecoin-station/spark-impact-evaluator": "^1.2.4", diff --git a/renderer/index.html b/renderer/index.html index 27387cb2b..fdc654774 100644 --- a/renderer/index.html +++ b/renderer/index.html @@ -3,7 +3,7 @@ - Filecoin Station + Checker
diff --git a/renderer/src/App.tsx b/renderer/src/App.tsx index 5dfc8c169..aaaa4025a 100644 --- a/renderer/src/App.tsx +++ b/renderer/src/App.tsx @@ -17,7 +17,7 @@ const App = ():JSX.Element => { return ( - Filecoin Station + Checker diff --git a/renderer/src/components/Onboarding.tsx b/renderer/src/components/Onboarding.tsx index 4379e55e5..56c572574 100644 --- a/renderer/src/components/Onboarding.tsx +++ b/renderer/src/components/Onboarding.tsx @@ -2,7 +2,7 @@ import { FC, useState } from 'react' import Back from 'src/assets/img/icons/arrow-left.svg?react' import Page from 'src/assets/img/icons/paginator-page.svg?react' import CurrentPage from 'src/assets/img/icons/paginator-current.svg?react' -import { showTermsOfService } from 'src/lib/station-config' +import { showTermsOfService } from 'src/lib/config' interface FooterProps { page: number; diff --git a/renderer/src/components/RebrandBanner.tsx b/renderer/src/components/RebrandBanner.tsx index 946e1ff54..d684b4620 100644 --- a/renderer/src/components/RebrandBanner.tsx +++ b/renderer/src/components/RebrandBanner.tsx @@ -1,7 +1,7 @@ import Text from './Text' import { useState } from 'react' import CloseIcon from 'src/assets/img/icons/close.svg?react' -import { openExternalURL } from 'src/lib/station-config' +import { openExternalURL } from 'src/lib/config' import { useLocation } from 'react-router' import { ROUTES } from 'src/lib/routes' diff --git a/renderer/src/components/UpdateBanner.tsx b/renderer/src/components/UpdateBanner.tsx index 2c1fe0ff3..9c12aa8f6 100644 --- a/renderer/src/components/UpdateBanner.tsx +++ b/renderer/src/components/UpdateBanner.tsx @@ -1,6 +1,6 @@ import { useEffect, useState } from 'react' import Warning from 'src/assets/img/icons/error.svg?react' -import { openReleaseNotes, restartToUpdate } from 'src/lib/station-config' +import { openReleaseNotes, restartToUpdate } from 'src/lib/config' const UpdateBanner = () => { const [isReadyToUpdate, setIsReadyToUpdate] = useState(false) diff --git a/renderer/src/components/WalletModal.tsx b/renderer/src/components/WalletModal.tsx index 48e6985fb..7899fc387 100644 --- a/renderer/src/components/WalletModal.tsx +++ b/renderer/src/components/WalletModal.tsx @@ -1,4 +1,4 @@ -import useWallet from 'src/hooks/StationWallet' +import useWallet from 'src/hooks/Wallet' import { useDialog } from './DialogProvider' import BorderedBox from './BorderedBox' import Text from './Text' diff --git a/renderer/src/components/WalletWidget.tsx b/renderer/src/components/WalletWidget.tsx index 07879caa8..a61dacbf3 100644 --- a/renderer/src/components/WalletWidget.tsx +++ b/renderer/src/components/WalletWidget.tsx @@ -1,4 +1,4 @@ -import useWallet from 'src/hooks/StationWallet' +import useWallet from 'src/hooks/Wallet' import WalletIcon from 'src/assets/img/icons/wallet.svg?react' import { useDialog } from './DialogProvider' import { formatFilValue } from 'src/lib/utils' diff --git a/renderer/src/hooks/StationActivity.tsx b/renderer/src/hooks/Activity.tsx similarity index 97% rename from renderer/src/hooks/StationActivity.tsx rename to renderer/src/hooks/Activity.tsx index a47846615..cf2109914 100644 --- a/renderer/src/hooks/StationActivity.tsx +++ b/renderer/src/hooks/Activity.tsx @@ -2,7 +2,7 @@ import { useState, useEffect } from 'react' import { getActivities, getTotalJobsCompleted -} from 'src/lib/station-config' +} from 'src/lib/config' import { Activity } from 'src/typings' interface StationActivity { diff --git a/renderer/src/hooks/StationRewards.tsx b/renderer/src/hooks/Rewards.tsx similarity index 98% rename from renderer/src/hooks/StationRewards.tsx rename to renderer/src/hooks/Rewards.tsx index bae028bf5..9eb2119a9 100644 --- a/renderer/src/hooks/StationRewards.tsx +++ b/renderer/src/hooks/Rewards.tsx @@ -1,6 +1,6 @@ import { useEffect, useMemo, useState } from 'react' -import { getScheduledRewards } from 'src/lib/station-config' -import useWallet from 'src/hooks/StationWallet' +import { getScheduledRewards } from 'src/lib/config' +import useWallet from 'src/hooks/Wallet' import { formattedFilToBigInt } from 'src/lib/utils' import { voyagerAirdrop } from './voyagerAirdrop' diff --git a/renderer/src/hooks/StationModules.tsx b/renderer/src/hooks/Subnets.tsx similarity index 100% rename from renderer/src/hooks/StationModules.tsx rename to renderer/src/hooks/Subnets.tsx diff --git a/renderer/src/hooks/StationWallet.tsx b/renderer/src/hooks/Wallet.tsx similarity index 99% rename from renderer/src/hooks/StationWallet.tsx rename to renderer/src/hooks/Wallet.tsx index 5db6704ea..a1e98bd87 100644 --- a/renderer/src/hooks/StationWallet.tsx +++ b/renderer/src/hooks/Wallet.tsx @@ -6,7 +6,7 @@ import { getStationWalletBalance, getStationWalletTransactionsHistory, transferAllFundsToDestinationWallet -} from 'src/lib/station-config' +} from 'src/lib/config' import { FILTransaction, FILTransactionProcessing, diff --git a/renderer/src/lib/station-config.tsx b/renderer/src/lib/config.tsx similarity index 100% rename from renderer/src/lib/station-config.tsx rename to renderer/src/lib/config.tsx diff --git a/renderer/src/lib/utils.ts b/renderer/src/lib/utils.ts index 41e0a0e16..86d7172cd 100644 --- a/renderer/src/lib/utils.ts +++ b/renderer/src/lib/utils.ts @@ -1,5 +1,5 @@ import { BigNumber, FilecoinNumber } from '@glif/filecoin-number' -import { browseTransactionTracker } from './station-config' +import { browseTransactionTracker } from './config' import { delegatedFromEthAddress, ethAddressFromDelegated, newFromString } from '@glif/filecoin-address' export function truncateString (value: string, size = 6) { diff --git a/renderer/src/pages/dashboard/ActivityInfo.tsx b/renderer/src/pages/dashboard/ActivityInfo.tsx index 646d359ea..0bcb7b39a 100644 --- a/renderer/src/pages/dashboard/ActivityInfo.tsx +++ b/renderer/src/pages/dashboard/ActivityInfo.tsx @@ -1,6 +1,6 @@ import BorderedBox from 'src/components/BorderedBox' import Text from 'src/components/Text' -import useStationActivity from 'src/hooks/StationActivity' +import useStationActivity from 'src/hooks/Activity' import WarningIcon from 'src/assets/img/icons/warning.svg?react' import JobIcon from 'src/assets/img/icons/job.svg?react' import { Activity } from 'shared/typings' diff --git a/renderer/src/pages/dashboard/Chart.tsx b/renderer/src/pages/dashboard/Chart.tsx index 4f35bbae2..7af7c9dc4 100644 --- a/renderer/src/pages/dashboard/Chart.tsx +++ b/renderer/src/pages/dashboard/Chart.tsx @@ -9,7 +9,7 @@ import { Chart as ChartType } from 'chart.js' import { Line } from 'react-chartjs-2' -import { RewardsRecord, sumAllRewards } from 'src/hooks/StationRewards' +import { RewardsRecord, sumAllRewards } from 'src/hooks/Rewards' import { TimeRange } from './ChartController' import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { diff --git a/renderer/src/pages/dashboard/ChartController.tsx b/renderer/src/pages/dashboard/ChartController.tsx index 281d669ec..c44b5f1c4 100644 --- a/renderer/src/pages/dashboard/ChartController.tsx +++ b/renderer/src/pages/dashboard/ChartController.tsx @@ -1,5 +1,5 @@ import { useMemo, useState } from 'react' -import { RewardsRecord } from 'src/hooks/StationRewards' +import { RewardsRecord } from 'src/hooks/Rewards' import Chart from './Chart' import { Select, SelectItem } from 'src/components/Select' import { ToggleGroup, ToggleGroupButton } from 'src/components/ToggleGroup' diff --git a/renderer/src/pages/dashboard/Dashboard.tsx b/renderer/src/pages/dashboard/Dashboard.tsx index 54a5ff03f..6c640cfe7 100644 --- a/renderer/src/pages/dashboard/Dashboard.tsx +++ b/renderer/src/pages/dashboard/Dashboard.tsx @@ -1,7 +1,7 @@ import BorderedBox from 'src/components/BorderedBox' import ActivityInfo from './ActivityInfo' import ChartController from './ChartController' -import useStationRewards from 'src/hooks/StationRewards' +import useStationRewards from 'src/hooks/Rewards' import RewardsInfo from './RewardsInfo' import { bigIntFilToNumber } from 'src/lib/utils' diff --git a/renderer/src/pages/modules/ModuleCard.tsx b/renderer/src/pages/modules/ModuleCard.tsx index ce2884aa9..b8cdc1d71 100644 --- a/renderer/src/pages/modules/ModuleCard.tsx +++ b/renderer/src/pages/modules/ModuleCard.tsx @@ -1,12 +1,12 @@ import { ReactNode } from 'react' import Tag from 'src/components/Tag' import Text from 'src/components/Text' -import { Module } from 'src/hooks/StationModules' +import { Module } from 'src/hooks/Subnets' import GithubIcon from 'src/assets/img/icons/github.svg?react' import DocsIcon from 'src/assets/img/icons/docs.svg?react' import ExplorerIcon from 'src/assets/img/icons/explorer.svg?react' import { openExplorerLink } from 'src/lib/utils' -import { openExternalURL } from 'src/lib/station-config' +import { openExternalURL } from 'src/lib/config' const ModuleLink = ({ children, onClick }: {children: ReactNode; onClick: () => void}) => ( ; getTotalJobsCompleted(): Promise; @@ -16,14 +16,14 @@ declare global { getScheduledRewards: () => Promise; - stationConfig: { + config: { getOnboardingCompleted: () => Promise; setOnboardingCompleted: () => Promise; - getStationWalletAddress: () => Promise; + getWalletAddress: () => Promise; getDestinationWalletAddress: () => Promise; setDestinationWalletAddress: (address: string | undefined) => Promise; - getStationWalletBalance: () => Promise; - getStationWalletTransactionsHistory: () => Promise<(FILTransaction|FILTransactionProcessing)[]>; + getWalletBalance: () => Promise; + getWalletTransactionsHistory: () => Promise<(FILTransaction|FILTransactionProcessing)[]>; transferAllFundsToDestinationWallet: () => Promise; openExternalURL: (url: string) => void; toggleOpenAtLogin: () => void; @@ -32,7 +32,7 @@ declare global { saveModuleLogsAs: () => void; checkForUpdates: () => void; }; - stationEvents: { + events: { onActivityLogged: (callback: (activity: Activity) => void) => () => void; onJobProcessed: (callback: (value: number) => void) => () => void; onEarningsChanged: (callback: (value: number) => void) => () => void; From 618f69601a15302859e72ef0ecadb8138807ac13 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Tue, 11 Feb 2025 15:18:56 +0100 Subject: [PATCH 02/38] "Filecoin Station" -> "Checker" --- README.md | 6 +++--- docs/RELEASE_PROCESS.md | 2 +- main/app-menu.js | 2 +- main/index.js | 2 +- main/tray.js | 4 ++-- main/ui.js | 6 +++--- main/updater.js | 12 ++++++------ 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 51a4a62a9..ee506fe5e 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,17 @@ -# Filecoin Station +# Checker [![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](https://protocol.ai/) [![](https://img.shields.io/badge/project-Filecoin-blue.svg?style=flat-square)](https://filecoin.io/) [![ci](https://github.com/CheckerNetwork/app/actions/workflows/ci.yml/badge.svg)](https://github.com/CheckerNetwork/app/actions/workflows/ci.yml) -Filecoin Station is a desktop app that connects your computer’s idle resources +Station is a desktop app that connects your computer’s idle resources to the Filecoin network and rewards you with Filecoin. Taking part is simple, just launch the app and start earning. Learn more at [filstation.app](https://filstation.app). ## Install -Release notes and all versions of Filecoin Station can be found on the +Release notes and all versions of Checker can be found on the [releases page](https://github.com/CheckerNetwork/app/releases). Each release has packages for desktop platforms: diff --git a/docs/RELEASE_PROCESS.md b/docs/RELEASE_PROCESS.md index 57d3cd4b0..e78f9a256 100644 --- a/docs/RELEASE_PROCESS.md +++ b/docs/RELEASE_PROCESS.md @@ -1,6 +1,6 @@ ## Overview -Filecoin Station uses +Checker uses [electron-build/auto-update](https://www.electron.build/auto-update) and a modified flow from [Electron Builder Action](https://github.com/samuelmeuli/action-electron-builder#electron-builder-action): diff --git a/main/app-menu.js b/main/app-menu.js index 74f17b4bf..426b001df 100644 --- a/main/app-menu.js +++ b/main/app-menu.js @@ -37,7 +37,7 @@ function setupCheckForUpdatesMenuItem (ctx, menu) { visible: false }) - // Filecoin Station menu + // Checker menu menu.items[0].submenu?.insert(1, checkForUpdates) menu.items[0].submenu?.insert(2, checkingForUpdates) } diff --git a/main/index.js b/main/index.js index 73ea62687..1fe4ce38b 100644 --- a/main/index.js +++ b/main/index.js @@ -44,7 +44,7 @@ const inTest = (process.env.NODE_ENV === 'test') const isDev = !app.isPackaged && !inTest log.info(format( - 'Filecoin Station build version: %s %s-%s%s%s', + 'Checker build version: %s %s-%s%s%s', BUILD_VERSION, os.platform(), os.arch(), diff --git a/main/tray.js b/main/tray.js index 2add62a27..6f7bbf1d2 100644 --- a/main/tray.js +++ b/main/tray.js @@ -48,7 +48,7 @@ function getTrayIcon (readyToUpdate, isOnline) { const createContextMenu = (/** @type {Context} */ ctx) => { const contextMenu = Menu.buildFromTemplate([ { - label: `Filecoin Station v${CHECKER_VERSION}`, + label: `Checker v${CHECKER_VERSION}`, enabled: false }, { @@ -89,7 +89,7 @@ module.exports = async function (/** @type {Context} */ ctx) { tray = new Tray(getTrayIcon(false, core.isOnline())) const contextMenu = createContextMenu(ctx) - tray.setToolTip('Filecoin Station') + tray.setToolTip('Checker') tray.setContextMenu(contextMenu) setupIpcEventListeners(ctx) diff --git a/main/ui.js b/main/ui.js index e9fb1c246..1f8c3390c 100644 --- a/main/ui.js +++ b/main/ui.js @@ -22,7 +22,7 @@ module.exports = async function (ctx) { const dimensions = screen.getPrimaryDisplay().size const ui = new BrowserWindow({ - title: 'Filecoin Station', + title: 'Checker', show: false, // we show it via ready-to-show width: Math.min(dimensions.width, 1440), height: Math.min(dimensions.height, 900), @@ -94,8 +94,8 @@ module.exports = async function (ctx) { event.preventDefault() if (!getTrayOperationExplained()) { showDialogSync({ - title: 'Closing Filecoin Station', - message: 'Station will continue running in the background.' + title: 'Closing Checker', + message: 'Checker will continue running in the background.' }) setTrayOperationExplained() } diff --git a/main/updater.js b/main/updater.js index 0599819db..fe583400a 100644 --- a/main/updater.js +++ b/main/updater.js @@ -170,7 +170,7 @@ function onUpdateNotAvailable ({ version }) { showDialogSync({ title: 'Update not available', - message: `You are on the latest version of Filecoin Station (${version}).`, + message: `You are on the latest version of Checker (${version}).`, type: 'info', buttons: ['Close'] }) @@ -186,8 +186,8 @@ function onUpdateDownloaded (ctx, { version /*, releaseNotes */ }) { const showUpdateDialog = () => { const buttonIx = showDialogSync({ - title: 'Update Filecoin Station', - message: `An update to Filecoin Station ${version} is available. ` + + title: 'Update Checker', + message: `An update to Checker ${version} is available. ` + 'Would you like to install it now?', type: 'info', buttons: ['Later', 'Show Release Notes', 'Install now'] @@ -208,8 +208,8 @@ function onUpdateDownloaded (ctx, { version /*, releaseNotes */ }) { // show unobtrusive notification + dialog on click ipcMain.emit(ipcMainEvents.READY_TO_UPDATE) updateNotification = new Notification({ - title: 'Filecoin Station Update', - body: `An update to Filecoin Station ${version} is available.` + title: 'Checker Update', + body: `An update to Checker ${version} is available.` }) updateNotification.on('click', showUpdateDialog) updateNotification.show() @@ -218,7 +218,7 @@ function onUpdateDownloaded (ctx, { version /*, releaseNotes */ }) { // We have a new version that we did not tried to install previously // Let's go ahead and restart the app to update updateNotification = new Notification({ - title: 'Restarting Filecoin Station', + title: 'Restarting Checker', body: `Updating to version ${version}.` }) updateNotification.show() From ecde67819fcc0bae32c87487d175b7b64de6c252 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Tue, 11 Feb 2025 15:32:07 +0100 Subject: [PATCH 03/38] station -> checker (wip) --- README.md | 4 +- docs/DEVELOPING.md | 4 +- docs/MODULE_INTERFACE.md | 12 +++--- main/config.js | 39 +++++++++++++---- main/index.js | 2 +- main/ipc.js | 2 +- main/telemetry.js | 2 +- main/tray.js | 4 +- main/ui.js | 2 +- main/updater.js | 4 +- renderer/README.md | 2 +- renderer/src/components/Layout.tsx | 2 - renderer/src/components/Onboarding.tsx | 6 +-- renderer/src/components/RebrandBanner.tsx | 36 ---------------- renderer/src/components/Sentry.tsx | 4 +- renderer/src/components/UpdateBanner.tsx | 4 +- renderer/src/components/WalletModal.tsx | 12 +++--- renderer/src/hooks/Activity.tsx | 10 ++--- renderer/src/hooks/Rewards.tsx | 14 +++---- renderer/src/hooks/Wallet.tsx | 30 ++++++------- renderer/src/lib/config.tsx | 42 +++++++++---------- renderer/src/pages/wallet/TransferWrapper.tsx | 6 +-- renderer/src/pages/wallet/Wallet.tsx | 12 +++--- renderer/src/test/dashboard.test.tsx | 22 +++++----- renderer/src/test/helpers.tsx | 2 +- renderer/src/test/onboarding.test.tsx | 2 +- renderer/src/test/settings.test.tsx | 2 +- renderer/src/test/wallet-modal.test.tsx | 12 +++--- renderer/src/test/wallet.test.tsx | 12 +++--- test/e2e/app-launch.e2e.test.js | 6 +-- 30 files changed, 150 insertions(+), 163 deletions(-) delete mode 100644 renderer/src/components/RebrandBanner.tsx diff --git a/README.md b/README.md index ee506fe5e..90d7388e4 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,10 @@ [![](https://img.shields.io/badge/project-Filecoin-blue.svg?style=flat-square)](https://filecoin.io/) [![ci](https://github.com/CheckerNetwork/app/actions/workflows/ci.yml/badge.svg)](https://github.com/CheckerNetwork/app/actions/workflows/ci.yml) -Station is a desktop app that connects your computer’s idle resources +Checker is a desktop app that connects your computer’s idle resources to the Filecoin network and rewards you with Filecoin. Taking part is simple, just launch the app and start earning. Learn more at -[filstation.app](https://filstation.app). +[checker.network](https://checker.network). ## Install diff --git a/docs/DEVELOPING.md b/docs/DEVELOPING.md index ed6421fbe..3415bcd8f 100644 --- a/docs/DEVELOPING.md +++ b/docs/DEVELOPING.md @@ -6,8 +6,8 @@ ```mermaid graph - fil-stat-repo(github.com/CheckerNetwork/app) --> fil-stat-main(Station main process) - fil-stat-repo --> fil-stat-webui(Station WebUI) + fil-stat-repo(github.com/CheckerNetwork/app) --> fil-stat-main(Checker main process) + fil-stat-repo --> fil-stat-webui(Checker WebUI) saturn-l2-repo(https://github.com/filecoin-project/saturn-l2) --> saturn-l2-go(Saturn L2 Node binary) diff --git a/docs/MODULE_INTERFACE.md b/docs/MODULE_INTERFACE.md index a80ebe05d..93a3179dd 100644 --- a/docs/MODULE_INTERFACE.md +++ b/docs/MODULE_INTERFACE.md @@ -1,11 +1,11 @@ -# Station module interface +# Checker module interface 1. A module itself is a long-running executable, which - performs its business logic - writes informative messages to `stdio` - exposes stats via a builtin webserver -1. A module needs to have its __binaries hosted__ on HTTPS accessible URLs, so that Station can download updates. Path patterns are flexible, GitHub Releases would be nice. +1. A module needs to have its __binaries hosted__ on HTTPS accessible URLs, so that Checker can download updates. Path patterns are flexible, GitHub Releases would be nice. Example: ``` @@ -38,8 +38,8 @@ 4. A module communicates activity by writing to its `stdout` stream: - `API: $1` The module has launched and `$1` can be queried for fetching module stats (see below) - - `INFO: $1` `$1` will be displayed to the user inside Station's Activity Log - - `ERROR: $1` `$1` will be displayed to the user inside Station's Activity Log, with a warning icon + - `INFO: $1` `$1` will be displayed to the user inside Checker's Activity Log + - `ERROR: $1` `$1` will be displayed to the user inside Checker's Activity Log, with a warning icon - `$1` all log lines will be stored in a module-specific log file, which can be submitted to Sentry for error handling 5. A module is expected to have provided its `API` URL in `<=500ms` @@ -61,8 +61,8 @@ the following fields: process restarts, somewhere in `ROOT_DIR`. The module may include additional fields in the JSON response, although - these will be ignored by Station. + these will be ignored by Checker. 7. A module can be told to shut down via signal `SIGTERM` -8. A module can shut down at any time, which is always considered an error. Its exit will be shown in Station's UI, and the last 100 lines of its output streams forwarded to Sentry. The module won't automatically be restarted by Station (for now). +8. A module can shut down at any time, which is always considered an error. Its exit will be shown in Checker's UI, and the last 100 lines of its output streams forwarded to Sentry. The module won't automatically be restarted by Checker (for now). diff --git a/main/config.js b/main/config.js index 414e08217..53a10040a 100644 --- a/main/config.js +++ b/main/config.js @@ -5,11 +5,11 @@ const Store = require('electron-store') const log = require('electron-log').scope('config') const ConfigKeys = { - OnboardingCompleted: 'station.OnboardingCompleted', - TrayOperationExplained: 'station.TrayOperationExplained', - StationID: 'station.StationID', - FilAddress: 'station.FilAddress', - DestinationFilAddress: 'station.DestinationFilAddress' + OnboardingCompleted: 'checker.OnboardingCompleted', + TrayOperationExplained: 'checker.TrayOperationExplained', + CheckerID: 'checker.CheckerID', + FilAddress: 'checker.FilAddress', + DestinationFilAddress: 'checker.DestinationFilAddress' } // Use this to test migrations @@ -18,6 +18,31 @@ const ConfigKeys = { const configStore = new Store({ migrations: { + '>x': store => { + const migration = [ + { + from: 'station.OnboardingCompleted', + to: ConfigKeys.OnboardingCompleted + }, { + from: 'station.TrayOperationExplained', + to: ConfigKeys.TrayOperationExplained + }, { + from: 'station.stationID', + to: ConfigKeys.CheckerID + }, { + from: 'station.FilAddress', + to: ConfigKeys.FilAddress + }, { + from: 'station.DestinationFilAddress', + to: ConfigKeys.DestinationFilAddress + } + ] + for (const { from, to } of migration) { + if (store.has(from)) { + store.set(to, store.get(from)) + } + } + }, '>=0.9.0': store => { if (store.has('station.onboardingCompleted')) { store.set( @@ -32,13 +57,13 @@ const configStore = new Store({ }, beforeEachMigration: (_, context) => { log.info( - `Migrating station-config from ${context.fromVersion} → ` + + `Migrating config from ${context.fromVersion} → ` + context.toVersion ) } }) -log.info('Loading Station configuration from', configStore.path) +log.info('Loading configuration from', configStore.path) let OnboardingCompleted = /** @type {boolean} */ diff --git a/main/index.js b/main/index.js index 1fe4ce38b..79d982151 100644 --- a/main/index.js +++ b/main/index.js @@ -91,7 +91,7 @@ if (!inTest && !app.requestSingleInstanceLock()) { app.quit() } -// When the user attempts to start the app and didn't notice the Station icon in +// When the user attempts to start the app and didn't notice the Checker icon in // the tray, help them out by showing the main window app.on('second-instance', () => { ctx.showUI() diff --git a/main/ipc.js b/main/ipc.js index b6288e74e..ea9cd348a 100644 --- a/main/ipc.js +++ b/main/ipc.js @@ -21,7 +21,7 @@ const ipcMainEvents = Object.freeze({ }) function setupIpcMain (/** @type {Context} */ ctx) { - // Station-wide config + // Checker-wide config ipcMain.handle( 'checker:getOnboardingCompleted', config.getOnboardingCompleted diff --git a/main/telemetry.js b/main/telemetry.js index 2e9e16f6d..9f0f88168 100644 --- a/main/telemetry.js +++ b/main/telemetry.js @@ -47,7 +47,7 @@ async function setup () { point.tag('platform', platform()) // `os.arch()` returns `x64` when running in a translated environment on // ARM64 machine, e.g. via macOS Rosetta. We don't provide Apple `arm64` - // builds yet. As a result, Stations running on Apple Silicon were reporting + // builds yet. As a result, Checkers running on Apple Silicon were reporting // `x64` arch. To fix the problem, we detect `arm64` translation and report // a different architecture. point.tag('arch', app?.runningUnderARM64Translation ? 'arm64' : arch()) diff --git a/main/tray.js b/main/tray.js index 6f7bbf1d2..c490c7cf1 100644 --- a/main/tray.js +++ b/main/tray.js @@ -52,7 +52,7 @@ const createContextMenu = (/** @type {Context} */ ctx) => { enabled: false }, { - label: 'Open Station', + label: 'Open Checker', click: () => ctx.showUI() }, { type: 'separator' }, @@ -77,7 +77,7 @@ const createContextMenu = (/** @type {Context} */ ctx) => { }, { type: 'separator' }, { - label: 'Quit Station', + label: 'Quit Checker', click: () => app.quit(), accelerator: IS_MAC ? 'Command+Q' : undefined } diff --git a/main/ui.js b/main/ui.js index 1f8c3390c..83acb9cd1 100644 --- a/main/ui.js +++ b/main/ui.js @@ -80,7 +80,7 @@ module.exports = async function (ctx) { if (app.dock) app.dock.show() ui.show() } - // We want the Station to start hidden in the tray. + // We want the Checker to start hidden in the tray. // However, when the user did not complete the onboarding flow, // we need to show the app to ask them to finish the setup process if (!getOnboardingCompleted()) { diff --git a/main/updater.js b/main/updater.js index fe583400a..a83b69f71 100644 --- a/main/updater.js +++ b/main/updater.js @@ -26,7 +26,7 @@ let nextVersion const store = new Store({ name: 'updater' }) function quitAndInstall () { - log.info('Restarting Station to install the new version') + log.info('Restarting Checker to install the new version') beforeQuitCleanup() store.set('upgradeToVersion', nextVersion) autoUpdater.quitAndInstall() @@ -202,7 +202,7 @@ function onUpdateDownloaded (ctx, { version /*, releaseNotes */ }) { if (checkingManually) { // when checking manually, show the dialog immediately showUpdateDialog() - // also don't trigger the automatic Station restart + // also don't trigger the automatic Checker restart // showUpdateDialog() offers the user to restart } else if (ctx.isShowingUI) { // show unobtrusive notification + dialog on click diff --git a/renderer/README.md b/renderer/README.md index d0839578d..cfbdd3ddd 100644 --- a/renderer/README.md +++ b/renderer/README.md @@ -1,3 +1,3 @@ # Renderer -This is the front-end application providing Station Shell UI. +This is the front-end application providing Checker Shell UI. diff --git a/renderer/src/components/Layout.tsx b/renderer/src/components/Layout.tsx index 8b3716edf..6d0d5a7fc 100644 --- a/renderer/src/components/Layout.tsx +++ b/renderer/src/components/Layout.tsx @@ -3,14 +3,12 @@ import Sidebar from 'src/components/Sidebar' import UpdateBanner from 'src/components/UpdateBanner' import WalletWidget from 'src/components/WalletWidget' import DraggableArea from 'src/components/DraggableArea' -import RebrandBanner from 'src/components/RebrandBanner' const Layout = ({ children }: {children: ReactNode}) => { return (
-
diff --git a/renderer/src/components/Onboarding.tsx b/renderer/src/components/Onboarding.tsx index 56c572574..5f5a0a8e7 100644 --- a/renderer/src/components/Onboarding.tsx +++ b/renderer/src/components/Onboarding.tsx @@ -64,7 +64,7 @@ const Onboarding: FC = ({ onFinish }) => {

- Station securely connects your computer to Filecoin's global peer-to-peer network, which + Checker securely connects your computer to Filecoin's global peer-to-peer network, which rewards you for your participation. Once you've connected, you will begin completing network jobs.

@@ -113,14 +113,14 @@ const Onboarding: FC = ({ onFinish }) => {

- Station asks for your consent to use your personal data to store and/or access information on a + Checker asks for your consent to use your personal data to store and/or access information on a device. Your personal data will be processed and information from your device (cookies, unique identifiers, and other device data) may be stored by, accessed by and shared with third party vendors, or used specifically by this app.

By clicking {'"'}Create Wallet{'"'} or otherwise continuing to use this service, you agree, you - have read, understand and accept Station's + have read, understand and accept Checker's {' '} { - const { pathname } = useLocation() - const [visible, setVisible] = useState(true) - - if (!visible) { - return null - } - - if (pathname === ROUTES.wallet) { - return null - } - - return ( -

-
- 🚨 Filecoin Station is becoming the Checker Network. - -
- -
- ) -} - -export default RebrandBanner diff --git a/renderer/src/components/Sentry.tsx b/renderer/src/components/Sentry.tsx index a61d4cfb6..991e59342 100644 --- a/renderer/src/components/Sentry.tsx +++ b/renderer/src/components/Sentry.tsx @@ -4,12 +4,12 @@ import * as Sentry from '@sentry/react' const SentryComponent = () => { useEffect(() => { // Disable Sentry integration for dev builds - if (window.electron.stationBuildVersion.endsWith('-dev')) { return } + if (window.electron.checkerBuildVersion.endsWith('-dev')) { return } Sentry.init({ dsn: 'https://8667b1c7749ae24e35ba531bffa3ed7a@o1408530.ingest.us.sentry.io/6762462', integrations: [Sentry.browserTracingIntegration()], - release: window.electron.stationBuildVersion, + release: window.electron.checkerBuildVersion, // Set tracesSampleRate to 1.0 to capture 100% // of transactions for performance monitoring. // We recommend adjusting this value in production diff --git a/renderer/src/components/UpdateBanner.tsx b/renderer/src/components/UpdateBanner.tsx index 9c12aa8f6..8f81ac79a 100644 --- a/renderer/src/components/UpdateBanner.tsx +++ b/renderer/src/components/UpdateBanner.tsx @@ -12,7 +12,7 @@ const UpdateBanner = () => { } reload() - const unsubscribeUpdateNotification = window.electron.stationEvents.onReadyToUpdate(() => { + const unsubscribeUpdateNotification = window.electron.events.onReadyToUpdate(() => { setIsReadyToUpdate(true) }) @@ -26,7 +26,7 @@ const UpdateBanner = () => {
- New version available: Station will update itself on next launch. + New version available: Checker will update itself on next launch.
diff --git a/renderer/src/components/WalletModal.tsx b/renderer/src/components/WalletModal.tsx index 7899fc387..fa0f41ff6 100644 --- a/renderer/src/components/WalletModal.tsx +++ b/renderer/src/components/WalletModal.tsx @@ -13,8 +13,8 @@ import TransactionStatusIndicator from './TransactionStatusIndicator' const WalletModal = () => { const { - stationAddress, - stationAddress0x, + walletAddress, + walletAddress0x, walletBalance, processingTransaction } = useWallet() @@ -32,14 +32,14 @@ const WalletModal = () => { - // Station address ... : + // Checker address ... :
-
-
+
+
diff --git a/renderer/src/hooks/Activity.tsx b/renderer/src/hooks/Activity.tsx index cf2109914..5ecb46629 100644 --- a/renderer/src/hooks/Activity.tsx +++ b/renderer/src/hooks/Activity.tsx @@ -5,11 +5,11 @@ import { } from 'src/lib/config' import { Activity } from 'src/typings' -interface StationActivity { +interface CheckerActivity { totalJobs: number; activities: Activity[] | []; } -const useStationActivity = (): StationActivity => { +const useCheckerActivity = (): CheckerActivity => { const [totalJobs, setTotalJobs] = useState(0) const [activities, setActivities] = useState([]) @@ -24,14 +24,14 @@ const useStationActivity = (): StationActivity => { }, []) useEffect(() => { - const unsubscribeOnJobProcessed = window.electron.stationEvents.onJobProcessed(setTotalJobs) + const unsubscribeOnJobProcessed = window.electron.events.onJobProcessed(setTotalJobs) return () => { unsubscribeOnJobProcessed() } }, []) useEffect(() => { - const unsubscribeOnActivityLogged = window.electron.stationEvents.onActivityLogged(activity => { + const unsubscribeOnActivityLogged = window.electron.events.onActivityLogged(activity => { setActivities(activities => { const updatedActivities = [activity, ...activities] updatedActivities.length = Math.min(updatedActivities.length, 100) @@ -46,4 +46,4 @@ const useStationActivity = (): StationActivity => { return { totalJobs, activities } } -export default useStationActivity +export default useCheckerActivity diff --git a/renderer/src/hooks/Rewards.tsx b/renderer/src/hooks/Rewards.tsx index 9eb2119a9..147d514f9 100644 --- a/renderer/src/hooks/Rewards.tsx +++ b/renderer/src/hooks/Rewards.tsx @@ -116,7 +116,7 @@ export function sumAllRewards (data: RewardsRecord['totalRewardsReceived']) { return Object.values(data).reduce((acc, val) => acc + val, 0n) } -const useStationRewards = () => { +const useCheckerRewards = () => { const wallet = useWallet() const [scheduledRewards, setScheduledRewards] = useState() const [historicalRewards, setHistoricalRewards] = useState([]) @@ -128,9 +128,9 @@ const useStationRewards = () => { useEffect(() => { async function loadStoredInfo () { - if (!wallet.stationAddress0x || document.hidden) return + if (!wallet.checkerAddress0x || document.hidden) return setHistoricalRewards( - await getHistoricalRewardsData(wallet.stationAddress0x) + await getHistoricalRewardsData(wallet.checkerAddress0x) ) } loadStoredInfo() @@ -140,7 +140,7 @@ const useStationRewards = () => { clearInterval(id) document.removeEventListener('visibilitychange', loadStoredInfo) } - }, [wallet.stationAddress0x]) + }, [wallet.checkerAddress0x]) useEffect(() => { async function loadStoredInfo () { @@ -154,10 +154,10 @@ const useStationRewards = () => { clearInterval(id) document.removeEventListener('visibilitychange', loadStoredInfo) } - }, [wallet.stationAddress0x]) + }, [wallet.checkerAddress0x]) useEffect(() => { - const unsubscribeOnScheduledRewardsUpdate = window.electron.stationEvents.onScheduledRewardsUpdate(balance => { + const unsubscribeOnScheduledRewardsUpdate = window.electron.checkerEvents.onScheduledRewardsUpdate(balance => { setScheduledRewards(formattedFilToBigInt(balance)) }) return () => { @@ -200,4 +200,4 @@ const useStationRewards = () => { } } -export default useStationRewards +export default useCheckerRewards diff --git a/renderer/src/hooks/Wallet.tsx b/renderer/src/hooks/Wallet.tsx index a1e98bd87..cbd76d8e5 100644 --- a/renderer/src/hooks/Wallet.tsx +++ b/renderer/src/hooks/Wallet.tsx @@ -2,9 +2,9 @@ import { useState, useEffect, useCallback, useRef } from 'react' import { getDestinationWalletAddress, setDestinationWalletAddress, - getStationWalletAddress, - getStationWalletBalance, - getStationWalletTransactionsHistory, + getCheckerWalletAddress, + getCheckerWalletBalance, + getCheckerWalletTransactionsHistory, transferAllFundsToDestinationWallet } from 'src/lib/config' import { @@ -16,8 +16,8 @@ import { import { ethAddressFromDelegated } from '@glif/filecoin-address' export interface Wallet { - stationAddress: string; - stationAddress0x: string; + checkerAddress: string; + checkerAddress0x: string; destinationFilAddress: string | undefined; walletBalance: string | undefined; walletTransactions: FILTransaction[] | undefined; @@ -28,7 +28,7 @@ export interface Wallet { } const useWallet = (): Wallet => { - const [stationAddress, setStationAddress] = useState('') + const [checkerAddress, setCheckerAddress] = useState('') const [destinationFilAddress, setDestinationFilAddress] = useState() const [walletBalance, setWalletBalance] = useState() const [walletTransactions, setWalletTransactions] = useState() @@ -87,21 +87,21 @@ const useWallet = (): Wallet => { useEffect(() => { const loadStoredInfo = async () => { - setStationAddress(await getStationWalletAddress()) + setCheckerAddress(await getCheckerWalletAddress()) } loadStoredInfo() - }, [stationAddress]) + }, [checkerAddress]) useEffect(() => { const loadStoredInfo = async () => { - setWalletBalance(await getStationWalletBalance()) + setWalletBalance(await getCheckerWalletBalance()) } loadStoredInfo() }, []) useEffect(() => { const loadStoredInfo = async () => { - setTransactions(await getStationWalletTransactionsHistory()) + setTransactions(await getCheckerWalletTransactionsHistory()) } loadStoredInfo() }, [setTransactions]) @@ -109,7 +109,7 @@ const useWallet = (): Wallet => { // Subscribe to events useEffect(() => { - const unsubscribeOnTransactionUpdate = window.electron.stationEvents.onTransactionUpdate( + const unsubscribeOnTransactionUpdate = window.electron.checkerEvents.onTransactionUpdate( setTransactions ) return () => { @@ -118,7 +118,7 @@ const useWallet = (): Wallet => { }, [setTransactions]) useEffect(() => { - const unsubscribeOnBalanceUpdate = window.electron.stationEvents.onBalanceUpdate(balance => { + const unsubscribeOnBalanceUpdate = window.electron.checkerEvents.onBalanceUpdate(balance => { setWalletBalance(balance) }) return () => { @@ -127,9 +127,9 @@ const useWallet = (): Wallet => { }, [walletBalance]) return { - stationAddress, - stationAddress0x: stationAddress !== '' - ? ethAddressFromDelegated(stationAddress) + checkerAddress, + checkerAddress0x: checkerAddress !== '' + ? ethAddressFromDelegated(checkerAddress) : '', destinationFilAddress, walletBalance, diff --git a/renderer/src/lib/config.tsx b/renderer/src/lib/config.tsx index ebb79084b..735bbb7e6 100644 --- a/renderer/src/lib/config.tsx +++ b/renderer/src/lib/config.tsx @@ -2,11 +2,11 @@ import { Activity, FILTransaction, FILTransactionProcessing } from 'src/typings' import pDebounce from 'p-debounce' export async function getOnboardingCompleted (): Promise { - return await window.electron.stationConfig.getOnboardingCompleted() + return await window.electron.checkerConfig.getOnboardingCompleted() } export async function setOnboardingCompleted (): Promise { - return await window.electron.stationConfig.setOnboardingCompleted() + return await window.electron.checkerConfig.setOnboardingCompleted() } export async function getActivities (): Promise { @@ -30,68 +30,68 @@ export function openReleaseNotes (): void { } export async function getDestinationWalletAddress (): Promise { - return await window.electron.stationConfig.getDestinationWalletAddress() + return await window.electron.checkerConfig.getDestinationWalletAddress() } export async function setDestinationWalletAddress (address: string | undefined): Promise { - return await window.electron.stationConfig.setDestinationWalletAddress(address) + return await window.electron.checkerConfig.setDestinationWalletAddress(address) } -export async function getStationWalletAddress (): Promise { - return await window.electron.stationConfig.getStationWalletAddress() +export async function getCheckerWalletAddress (): Promise { + return await window.electron.checkerConfig.getCheckerWalletAddress() } -export async function getStationWalletBalance (): Promise { - return await window.electron.stationConfig.getStationWalletBalance() +export async function getCheckerWalletBalance (): Promise { + return await window.electron.checkerConfig.getCheckerWalletBalance() } -export const getStationWalletTransactionsHistory = pDebounce( +export const getCheckerWalletTransactionsHistory = pDebounce( async function (): Promise<(FILTransaction|FILTransactionProcessing)[]> { - return await window.electron.stationConfig.getStationWalletTransactionsHistory() + return await window.electron.checkerConfig.getCheckerWalletTransactionsHistory() }, 0 ) export async function transferAllFundsToDestinationWallet (): Promise { - return await window.electron.stationConfig.transferAllFundsToDestinationWallet() + return await window.electron.checkerConfig.transferAllFundsToDestinationWallet() } export function browseTransactionTracker (transactionHash: string): void { - return window.electron.stationConfig.openExternalURL(`https://beryx.zondax.ch/v1/search/fil/mainnet/address/${transactionHash}`) + return window.electron.checkerConfig.openExternalURL(`https://beryx.zondax.ch/v1/search/fil/mainnet/address/${transactionHash}`) } export function openExternalURL (url: string): void { - return window.electron.stationConfig.openExternalURL(url) + return window.electron.checkerConfig.openExternalURL(url) } export function openBeryx (): void { - return window.electron.stationConfig.openExternalURL('https://beryx.io/') + return window.electron.checkerConfig.openExternalURL('https://beryx.io/') } export function showTermsOfService (): void { - return window.electron.stationConfig.openExternalURL('https://pl-strflt.notion.site/Station-Terms-Conditions-e97da76bb89f49e280c2897aebe4c41f?pvs=4') + return window.electron.checkerConfig.openExternalURL('https://pl-strflt.notion.site/Station-Terms-Conditions-e97da76bb89f49e280c2897aebe4c41f?pvs=4') } export function openDocsLink () { - return window.electron.stationConfig.openExternalURL('https://docs.filstation.app/your-station-wallet') + return window.electron.checkerConfig.openExternalURL('https://docs.filstation.app/your-station-wallet') } export function toggleOpenAtLogin () { - return window.electron.stationConfig.toggleOpenAtLogin() + return window.electron.checkerConfig.toggleOpenAtLogin() } export function isOpenAtLogin () { - return window.electron.stationConfig.isOpenAtLogin() + return window.electron.checkerConfig.isOpenAtLogin() } export function exportSeedPhrase () { - return window.electron.stationConfig.exportSeedPhrase() + return window.electron.checkerConfig.exportSeedPhrase() } export function saveModuleLogsAs () { - return window.electron.stationConfig.saveModuleLogsAs() + return window.electron.checkerConfig.saveModuleLogsAs() } export function checkForUpdates () { - return window.electron.stationConfig.checkForUpdates() + return window.electron.checkerConfig.checkForUpdates() } diff --git a/renderer/src/pages/wallet/TransferWrapper.tsx b/renderer/src/pages/wallet/TransferWrapper.tsx index e2e407426..735a92a28 100644 --- a/renderer/src/pages/wallet/TransferWrapper.tsx +++ b/renderer/src/pages/wallet/TransferWrapper.tsx @@ -11,7 +11,7 @@ import { openDocsLink } from 'src/lib/config' const SEND_THRESHOLD = 0.01 const TransferWrapper = ({ - stationAddress, + checkerAddress, destinationFilAddress, processingTransaction, walletBalance, @@ -20,7 +20,7 @@ const TransferWrapper = ({ }: { walletBalance: Wallet['walletBalance']; destinationFilAddress?: Wallet['destinationFilAddress']; - stationAddress?: Wallet['stationAddress']; + checkerAddress?: Wallet['checkerAddress']; processingTransaction: Wallet['processingTransaction']; editDestinationAddress: Wallet['editDestinationAddress']; transferAllFundsToDestinationWallet: Wallet['transferAllFundsToDestinationWallet']; @@ -45,7 +45,7 @@ const TransferWrapper = ({ destinationFilAddress={destinationFilAddress} processingTransaction={processingTransaction} /> - {stationAddress && ( + {checkerAddress && ( <> { const { walletBalance, - stationAddress, - stationAddress0x, + checkerAddress, + checkerAddress0x, walletTransactions, destinationFilAddress, editDestinationAddress, @@ -31,12 +31,12 @@ const Wallet = () => { // Station address ... :
-
-
+
+
@@ -49,7 +49,7 @@ const Wallet = () => { destinationFilAddress={destinationFilAddress} editDestinationAddress={editDestinationAddress} transferAllFundsToDestinationWallet={transferAllFundsToDestinationWallet} - stationAddress={stationAddress} + checkerAddress={checkerAddress} processingTransaction={processingTransaction} /> diff --git a/renderer/src/test/dashboard.test.tsx b/renderer/src/test/dashboard.test.tsx index 3fd2d3f44..70d549413 100644 --- a/renderer/src/test/dashboard.test.tsx +++ b/renderer/src/test/dashboard.test.tsx @@ -5,9 +5,9 @@ import { getActivities, getDestinationWalletAddress, getScheduledRewards, - getStationWalletAddress, - getStationWalletBalance, - getStationWalletTransactionsHistory + getCheckerWalletAddress, + getCheckerWalletBalance, + getCheckerWalletTransactionsHistory } from 'src/lib/config' import Dashboard from 'src/pages/dashboard/Dashboard' import useWallet from 'src/hooks/Wallet' @@ -20,7 +20,7 @@ import { useEffect, useState } from 'react' vi.mock('src/hooks/StationWallet') vi.mock('src/hooks/StationActivity') vi.mock('src/hooks/StationRewards') -vi.mock('src/lib/station-config') +vi.mock('src/lib/checker-config') stubGlobalElectron() @@ -31,9 +31,9 @@ describe('Dashboard page', () => { describe('Unpopulated', () => { beforeAll(() => { - vi.mocked(getStationWalletBalance).mockReturnValue(Promise.resolve('0')) - vi.mocked(getStationWalletTransactionsHistory).mockReturnValue(Promise.resolve([])) - vi.mocked(getStationWalletAddress).mockReturnValue( + vi.mocked(getCheckerWalletBalance).mockReturnValue(Promise.resolve('0')) + vi.mocked(getCheckerWalletTransactionsHistory).mockReturnValue(Promise.resolve([])) + vi.mocked(getCheckerWalletAddress).mockReturnValue( Promise.resolve('f16m5slrkc6zumruuhdzn557a5sdkbkiellron4qa') ) vi.mocked(getDestinationWalletAddress).mockReturnValue(Promise.resolve('')) @@ -43,8 +43,8 @@ describe('Dashboard page', () => { beforeEach(() => { vi.mocked(useWallet).mockReturnValue({ - stationAddress: 'f16m5slrkc6zumruuhdzn557a5sdkbkiellron4qa', - stationAddress0x: '0x000000000000000000000000000000000000dEaD', + checkerAddress: 'f16m5slrkc6zumruuhdzn557a5sdkbkiellron4qa', + checkerAddress0x: '0x000000000000000000000000000000000000dEaD', destinationFilAddress: '', walletBalance: '0', walletTransactions: [], @@ -85,8 +85,8 @@ describe('Dashboard page', () => { vi.useFakeTimers() vi.mocked(useWallet).mockReturnValue({ - stationAddress: 'f16m5slrkc6zumruuhdzn557a5sdkbkiellron4qa', - stationAddress0x: '0x000000000000000000000000000000000000dEaD', + checkerAddress: 'f16m5slrkc6zumruuhdzn557a5sdkbkiellron4qa', + checkerAddress0x: '0x000000000000000000000000000000000000dEaD', destinationFilAddress: 'f16m5slrkc6zumruuhdzn557a5sdkbkiellfff2rg', walletBalance: '0', walletTransactions: [], diff --git a/renderer/src/test/helpers.tsx b/renderer/src/test/helpers.tsx index 9c5b91151..77d7ef101 100644 --- a/renderer/src/test/helpers.tsx +++ b/renderer/src/test/helpers.tsx @@ -8,7 +8,7 @@ import { vi } from 'vitest' export function stubGlobalElectron () { vi.stubGlobal('electron', { - stationEvents: { + checkerEvents: { onActivityLogged: vi.fn(), onEarningsChanged: vi.fn(), onJobProcessed: vi.fn(), diff --git a/renderer/src/test/onboarding.test.tsx b/renderer/src/test/onboarding.test.tsx index c0233e5b7..9281af7ee 100644 --- a/renderer/src/test/onboarding.test.tsx +++ b/renderer/src/test/onboarding.test.tsx @@ -11,7 +11,7 @@ const mocks = vi.hoisted(() => { } }) -vi.mock('src/lib/station-config') +vi.mock('src/lib/checker-config') vi.mock('react-router', async () => { const router = await vi.importActual('react-router') diff --git a/renderer/src/test/settings.test.tsx b/renderer/src/test/settings.test.tsx index 9ff6a152a..2e742477c 100644 --- a/renderer/src/test/settings.test.tsx +++ b/renderer/src/test/settings.test.tsx @@ -3,7 +3,7 @@ import { checkForUpdates, exportSeedPhrase, isOpenAtLogin, saveModuleLogsAs } fr import Settings from 'src/pages/settings/Settings' import { describe, expect, test, vi } from 'vitest' -vi.mock('src/lib/station-config') +vi.mock('src/lib/checker-config') const mocks = vi.hoisted(() => { return { diff --git a/renderer/src/test/wallet-modal.test.tsx b/renderer/src/test/wallet-modal.test.tsx index 6ae7c6bc5..0eff7b21f 100644 --- a/renderer/src/test/wallet-modal.test.tsx +++ b/renderer/src/test/wallet-modal.test.tsx @@ -10,10 +10,10 @@ import { renderApp, stubGlobalElectron } from './helpers' const mockedSetDestinationWalletAddress = vi.fn() -vi.mock('src/lib/station-config', () => ({ - getStationWalletBalance: () => Promise.resolve(0), - getStationWalletTransactionsHistory: () => Promise.resolve([]), - getStationWalletAddress: () => Promise.resolve('f16m5slrkc6zumruuhdzn557a5sdkbkiellron4qa'), +vi.mock('src/lib/checker-config', () => ({ + getCheckerWalletBalance: () => Promise.resolve(0), + getCheckerWalletTransactionsHistory: () => Promise.resolve([]), + getCheckerWalletAddress: () => Promise.resolve('f16m5slrkc6zumruuhdzn557a5sdkbkiellron4qa'), getDestinationWalletAddress: () => Promise.resolve(''), setDestinationWalletAddress: () => mockedSetDestinationWalletAddress, getScheduledRewards: () => Promise.resolve('0.0'), @@ -31,8 +31,8 @@ describe('Dashboard wallet display', () => { vi.clearAllMocks() vi.mocked(useWallet).mockReturnValue({ - stationAddress: 'f16m5slrkc6zumruuhdzn557a5sdkbkiellron4qa', - stationAddress0x: '0x000000000000000000000000000000000000dEaD', + checkerAddress: 'f16m5slrkc6zumruuhdzn557a5sdkbkiellron4qa', + checkerAddress0x: '0x000000000000000000000000000000000000dEaD', destinationFilAddress: '', walletBalance: '0', walletTransactions: [], diff --git a/renderer/src/test/wallet.test.tsx b/renderer/src/test/wallet.test.tsx index cc5ab44fb..6942a755d 100644 --- a/renderer/src/test/wallet.test.tsx +++ b/renderer/src/test/wallet.test.tsx @@ -17,8 +17,8 @@ describe('Transfer page', () => { describe('Wallet info', () => { beforeEach(() => { vi.mocked(useWallet).mockReturnValue({ - stationAddress: 'f16m5slrkc6zumruuhdzn557a5sdkbkiellron4qa', - stationAddress0x: '0x000000000000000000000000000000000000dEaD', + checkerAddress: 'f16m5slrkc6zumruuhdzn557a5sdkbkiellron4qa', + checkerAddress0x: '0x000000000000000000000000000000000000dEaD', destinationFilAddress: '', walletBalance: '0', walletTransactions: [], @@ -47,8 +47,8 @@ describe('Transfer page', () => { } return { - stationAddress: 'f16m5slrkc6zumruuhdzn557a5sdkbkiellron4qa', - stationAddress0x: '0x000000000000000000000000000000000000dEaD', + checkerAddress: 'f16m5slrkc6zumruuhdzn557a5sdkbkiellron4qa', + checkerAddress0x: '0x000000000000000000000000000000000000dEaD', destinationFilAddress, walletBalance: '0', walletTransactions: [], @@ -108,8 +108,8 @@ describe('Transfer page', () => { }, []) return { - stationAddress: 'f16m5slrkc6zumruuhdzn557a5sdkbkiellron4qa', - stationAddress0x: '0x000000000000000000000000000000000000dEaD', + checkerAddress: 'f16m5slrkc6zumruuhdzn557a5sdkbkiellron4qa', + checkerAddress0x: '0x000000000000000000000000000000000000dEaD', destinationFilAddress: '0x000000000000000000000000000000000000dEaD', walletBalance: balance, walletTransactions: [], diff --git a/test/e2e/app-launch.e2e.test.js b/test/e2e/app-launch.e2e.test.js index ceecdb0c3..8f791c6e9 100644 --- a/test/e2e/app-launch.e2e.test.js +++ b/test/e2e/app-launch.e2e.test.js @@ -23,8 +23,8 @@ test.describe.serial('Application launch', async () => { test.slow() // Launch Electron app against sandbox fake HOME dir - const stationRootDir = tmp.dirSync({ - prefix: 'station-', + const checkerRootDir = tmp.dirSync({ + prefix: 'checker-', unsafeCleanup: true }).name electronApp = await electron.launch({ @@ -32,7 +32,7 @@ test.describe.serial('Application launch', async () => { env: { ...process.env, NODE_ENV: 'test', - STATION_ROOT: stationRootDir, + CHECKER_ROOT: checkerRootDir, DISABLE_KEYTAR: 'true' }, timeout: 30000 * TIMEOUT_MULTIPLIER From e5c6b81737cb4b146bbd2876ea12424b2490a31e Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Tue, 11 Feb 2025 15:37:00 +0100 Subject: [PATCH 04/38] docs --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 90d7388e4..6d62e61e9 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Checker is a desktop app that connects your computer’s idle resources to the Filecoin network and rewards you with Filecoin. Taking part is simple, just launch the app and start earning. Learn more at -[checker.network](https://checker.network). +[app.checker.network](https://app.checker.network). ## Install From 9499282ffc2c326699812376fbc5072e4bbecdcf Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Tue, 11 Feb 2025 15:39:03 +0100 Subject: [PATCH 05/38] fix set config migration version --- main/config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/config.js b/main/config.js index 53a10040a..7e859608a 100644 --- a/main/config.js +++ b/main/config.js @@ -18,7 +18,7 @@ const ConfigKeys = { const configStore = new Store({ migrations: { - '>x': store => { + '>=3.0.0': store => { const migration = [ { from: 'station.OnboardingCompleted', From b2971cfb1bc9d4c3505263b57d9fb684bb5da073 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Tue, 11 Feb 2025 15:39:39 +0100 Subject: [PATCH 06/38] clean up --- main/config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/config.js b/main/config.js index 7e859608a..686919812 100644 --- a/main/config.js +++ b/main/config.js @@ -57,7 +57,7 @@ const configStore = new Store({ }, beforeEachMigration: (_, context) => { log.info( - `Migrating config from ${context.fromVersion} → ` + + `Migrating checker-config from ${context.fromVersion} → ` + context.toVersion ) } From 7d53f6015d5e78dab062db47d8d6e1c7dc58d3a7 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Tue, 11 Feb 2025 15:40:16 +0100 Subject: [PATCH 07/38] clean up --- main/{config.js => checker-config.js} | 0 main/ipc.js | 2 +- main/telemetry.js | 2 +- main/ui.js | 2 +- main/wallet.js | 2 +- renderer/src/components/Onboarding.tsx | 2 +- renderer/src/components/UpdateBanner.tsx | 2 +- renderer/src/hooks/Activity.tsx | 2 +- renderer/src/hooks/Rewards.tsx | 2 +- renderer/src/hooks/Wallet.tsx | 2 +- renderer/src/lib/{config.tsx => checker-config.tsx} | 0 renderer/src/lib/utils.ts | 2 +- renderer/src/pages/modules/ModuleCard.tsx | 2 +- renderer/src/pages/onboarding/Onboarding.tsx | 2 +- renderer/src/pages/settings/Settings.tsx | 2 +- renderer/src/pages/wallet/TransferWrapper.tsx | 2 +- renderer/src/test/dashboard.test.tsx | 2 +- renderer/src/test/onboarding.test.tsx | 2 +- renderer/src/test/settings.test.tsx | 2 +- renderer/src/test/wallet-modal.test.tsx | 2 +- 20 files changed, 18 insertions(+), 18 deletions(-) rename main/{config.js => checker-config.js} (100%) rename renderer/src/lib/{config.tsx => checker-config.tsx} (100%) diff --git a/main/config.js b/main/checker-config.js similarity index 100% rename from main/config.js rename to main/checker-config.js diff --git a/main/ipc.js b/main/ipc.js index ea9cd348a..a0d82a187 100644 --- a/main/ipc.js +++ b/main/ipc.js @@ -2,7 +2,7 @@ const { ipcMain } = require('electron') -const config = require('./config') +const config = require('./checker-config') const wallet = require('./wallet') /** @typedef {import('./typings').Context} Context */ diff --git a/main/telemetry.js b/main/telemetry.js index 9f0f88168..0c7b0a0a2 100644 --- a/main/telemetry.js +++ b/main/telemetry.js @@ -3,7 +3,7 @@ const { app } = require('electron') const { InfluxDB, Point } = require('@influxdata/influxdb-client') const { createHash } = require('node:crypto') -const { getDestinationWalletAddress } = require('./config') +const { getDestinationWalletAddress } = require('./checker-config') const wallet = require('./wallet') const Sentry = require('@sentry/node') const { platform, arch } = require('node:os') diff --git a/main/ui.js b/main/ui.js index 83acb9cd1..6281fe7d3 100644 --- a/main/ui.js +++ b/main/ui.js @@ -8,7 +8,7 @@ const { getTrayOperationExplained, setTrayOperationExplained, getOnboardingCompleted -} = require('./config') +} = require('./checker-config') const { showDialogSync } = require('./dialog') const wallet = require('./wallet') diff --git a/main/wallet.js b/main/wallet.js index 753c2117c..1ccbac038 100644 --- a/main/wallet.js +++ b/main/wallet.js @@ -2,7 +2,7 @@ const electronLog = require('electron-log') const assert = require('assert') -const { getDestinationWalletAddress } = require('./config') +const { getDestinationWalletAddress } = require('./checker-config') const timers = require('node:timers/promises') const { format } = require('node:util') const Store = require('electron-store') diff --git a/renderer/src/components/Onboarding.tsx b/renderer/src/components/Onboarding.tsx index 5f5a0a8e7..77903b10c 100644 --- a/renderer/src/components/Onboarding.tsx +++ b/renderer/src/components/Onboarding.tsx @@ -2,7 +2,7 @@ import { FC, useState } from 'react' import Back from 'src/assets/img/icons/arrow-left.svg?react' import Page from 'src/assets/img/icons/paginator-page.svg?react' import CurrentPage from 'src/assets/img/icons/paginator-current.svg?react' -import { showTermsOfService } from 'src/lib/config' +import { showTermsOfService } from 'src/lib/checker-config' interface FooterProps { page: number; diff --git a/renderer/src/components/UpdateBanner.tsx b/renderer/src/components/UpdateBanner.tsx index 8f81ac79a..137a2a253 100644 --- a/renderer/src/components/UpdateBanner.tsx +++ b/renderer/src/components/UpdateBanner.tsx @@ -1,6 +1,6 @@ import { useEffect, useState } from 'react' import Warning from 'src/assets/img/icons/error.svg?react' -import { openReleaseNotes, restartToUpdate } from 'src/lib/config' +import { openReleaseNotes, restartToUpdate } from 'src/lib/checker-config' const UpdateBanner = () => { const [isReadyToUpdate, setIsReadyToUpdate] = useState(false) diff --git a/renderer/src/hooks/Activity.tsx b/renderer/src/hooks/Activity.tsx index 5ecb46629..e020c5430 100644 --- a/renderer/src/hooks/Activity.tsx +++ b/renderer/src/hooks/Activity.tsx @@ -2,7 +2,7 @@ import { useState, useEffect } from 'react' import { getActivities, getTotalJobsCompleted -} from 'src/lib/config' +} from 'src/lib/checker-config' import { Activity } from 'src/typings' interface CheckerActivity { diff --git a/renderer/src/hooks/Rewards.tsx b/renderer/src/hooks/Rewards.tsx index 147d514f9..ee51313d6 100644 --- a/renderer/src/hooks/Rewards.tsx +++ b/renderer/src/hooks/Rewards.tsx @@ -1,5 +1,5 @@ import { useEffect, useMemo, useState } from 'react' -import { getScheduledRewards } from 'src/lib/config' +import { getScheduledRewards } from 'src/lib/checker-config' import useWallet from 'src/hooks/Wallet' import { formattedFilToBigInt } from 'src/lib/utils' import { voyagerAirdrop } from './voyagerAirdrop' diff --git a/renderer/src/hooks/Wallet.tsx b/renderer/src/hooks/Wallet.tsx index cbd76d8e5..ca45186de 100644 --- a/renderer/src/hooks/Wallet.tsx +++ b/renderer/src/hooks/Wallet.tsx @@ -6,7 +6,7 @@ import { getCheckerWalletBalance, getCheckerWalletTransactionsHistory, transferAllFundsToDestinationWallet -} from 'src/lib/config' +} from 'src/lib/checker-config' import { FILTransaction, FILTransactionProcessing, diff --git a/renderer/src/lib/config.tsx b/renderer/src/lib/checker-config.tsx similarity index 100% rename from renderer/src/lib/config.tsx rename to renderer/src/lib/checker-config.tsx diff --git a/renderer/src/lib/utils.ts b/renderer/src/lib/utils.ts index 86d7172cd..2bc5fd34e 100644 --- a/renderer/src/lib/utils.ts +++ b/renderer/src/lib/utils.ts @@ -1,5 +1,5 @@ import { BigNumber, FilecoinNumber } from '@glif/filecoin-number' -import { browseTransactionTracker } from './config' +import { browseTransactionTracker } from './checker-config' import { delegatedFromEthAddress, ethAddressFromDelegated, newFromString } from '@glif/filecoin-address' export function truncateString (value: string, size = 6) { diff --git a/renderer/src/pages/modules/ModuleCard.tsx b/renderer/src/pages/modules/ModuleCard.tsx index b8cdc1d71..34c343154 100644 --- a/renderer/src/pages/modules/ModuleCard.tsx +++ b/renderer/src/pages/modules/ModuleCard.tsx @@ -6,7 +6,7 @@ import GithubIcon from 'src/assets/img/icons/github.svg?react' import DocsIcon from 'src/assets/img/icons/docs.svg?react' import ExplorerIcon from 'src/assets/img/icons/explorer.svg?react' import { openExplorerLink } from 'src/lib/utils' -import { openExternalURL } from 'src/lib/config' +import { openExternalURL } from 'src/lib/checker-config' const ModuleLink = ({ children, onClick }: {children: ReactNode; onClick: () => void}) => ( Date: Tue, 11 Feb 2025 15:40:49 +0100 Subject: [PATCH 08/38] clean up --- main/checker-config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/checker-config.js b/main/checker-config.js index 686919812..1194a7865 100644 --- a/main/checker-config.js +++ b/main/checker-config.js @@ -63,7 +63,7 @@ const configStore = new Store({ } }) -log.info('Loading configuration from', configStore.path) +log.info('Loading Checker configuration from', configStore.path) let OnboardingCompleted = /** @type {boolean} */ From 496d603740b2257e64f82c4f2828d055986bdd13 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Tue, 11 Feb 2025 15:42:12 +0100 Subject: [PATCH 09/38] clean up --- main/ipc.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/main/ipc.js b/main/ipc.js index a0d82a187..476e96a35 100644 --- a/main/ipc.js +++ b/main/ipc.js @@ -2,7 +2,7 @@ const { ipcMain } = require('electron') -const config = require('./checker-config') +const checkerConfig = require('./checker-config') const wallet = require('./wallet') /** @typedef {import('./typings').Context} Context */ @@ -24,21 +24,21 @@ function setupIpcMain (/** @type {Context} */ ctx) { // Checker-wide config ipcMain.handle( 'checker:getOnboardingCompleted', - config.getOnboardingCompleted + checkerConfig.getOnboardingCompleted ) ipcMain.handle( 'checker:setOnboardingCompleted', - (_event) => config.setOnboardingCompleted() + (_event) => checkerConfig.setOnboardingCompleted() ) // Wallet-wide config ipcMain.handle('checker:getWalletAddress', wallet.getAddress) ipcMain.handle( 'checker:getDestinationWalletAddress', - config.getDestinationWalletAddress + checkerConfig.getDestinationWalletAddress ) ipcMain.handle( 'checker:setDestinationWalletAddress', - (_event, address) => config.setDestinationWalletAddress(address) + (_event, address) => checkerConfig.setDestinationWalletAddress(address) ) ipcMain.handle('checker:getWalletBalance', wallet.getBalance) ipcMain.handle( From fe3fff9b380412fb48e4e9cd97418e9b80a1ebe0 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Tue, 11 Feb 2025 15:43:31 +0100 Subject: [PATCH 10/38] clean up --- main/index.js | 2 +- main/ipc.js | 6 +++--- main/preload.js | 12 ++++++------ main/tray.js | 2 +- main/typings.ts | 2 +- renderer/src/typings.ts | 6 +++--- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/main/index.js b/main/index.js index 79d982151..3f7a36b96 100644 --- a/main/index.js +++ b/main/index.js @@ -121,7 +121,7 @@ const ctx = { }, getScheduledRewards: () => wallet.getScheduledRewards(), - getWalletBalance: () => wallet.getBalance(), + getCheckerWalletBalance: () => wallet.getBalance(), manualCheckForUpdates: () => { throw new Error('never get here') }, saveModuleLogsAs: () => { throw new Error('never get here') }, diff --git a/main/ipc.js b/main/ipc.js index 476e96a35..ff27b621f 100644 --- a/main/ipc.js +++ b/main/ipc.js @@ -31,7 +31,7 @@ function setupIpcMain (/** @type {Context} */ ctx) { (_event) => checkerConfig.setOnboardingCompleted() ) // Wallet-wide config - ipcMain.handle('checker:getWalletAddress', wallet.getAddress) + ipcMain.handle('checker:getCheckerWalletAddress', wallet.getAddress) ipcMain.handle( 'checker:getDestinationWalletAddress', checkerConfig.getDestinationWalletAddress @@ -40,13 +40,13 @@ function setupIpcMain (/** @type {Context} */ ctx) { 'checker:setDestinationWalletAddress', (_event, address) => checkerConfig.setDestinationWalletAddress(address) ) - ipcMain.handle('checker:getWalletBalance', wallet.getBalance) + ipcMain.handle('checker:getCheckerWalletBalance', wallet.getBalance) ipcMain.handle( 'checker:getScheduledRewards', ctx.getScheduledRewardsForAddress ) ipcMain.handle( - 'checker:getWalletTransactionsHistory', + 'checker:getCheckerWalletTransactionsHistory', wallet.listTransactions ) ipcMain.handle( diff --git a/main/preload.js b/main/preload.js index f4711c27e..01969331b 100644 --- a/main/preload.js +++ b/main/preload.js @@ -27,16 +27,16 @@ contextBridge.exposeInMainWorld('electron', { ipcRenderer.invoke('checker:getOnboardingCompleted'), setOnboardingCompleted: () => ipcRenderer.invoke('checker:setOnboardingCompleted'), - getWalletAddress: () => - ipcRenderer.invoke('checker:getWalletAddress'), + getCheckerWalletAddress: () => + ipcRenderer.invoke('checker:getCheckerWalletAddress'), getDestinationWalletAddress: () => ipcRenderer.invoke('checker:getDestinationWalletAddress'), setDestinationWalletAddress: (/** @type {string | undefined} */ address) => ipcRenderer.invoke('checker:setDestinationWalletAddress', address), - getWalletBalance: () => - ipcRenderer.invoke('checker:getWalletBalance'), - getWalletTransactionsHistory: () => - ipcRenderer.invoke('checker:getWalletTransactionsHistory'), + getCheckerWalletBalance: () => + ipcRenderer.invoke('checker:getCheckerWalletBalance'), + getCheckerWalletTransactionsHistory: () => + ipcRenderer.invoke('checker:getCheckerWalletTransactionsHistory'), transferAllFundsToDestinationWallet: () => ipcRenderer.invoke('checker:transferAllFundsToDestinationWallet'), openExternalURL: (/** @type {string } */ url) => diff --git a/main/tray.js b/main/tray.js index c490c7cf1..ea3a0600a 100644 --- a/main/tray.js +++ b/main/tray.js @@ -65,7 +65,7 @@ const createContextMenu = (/** @type {Context} */ ctx) => { { label: `Wallet Balance: ${ - formatTokenValue(ctx.getWalletBalance()) + formatTokenValue(ctx.getCheckerWalletBalance()) } FIL`, enabled: false }, diff --git a/main/typings.ts b/main/typings.ts index 140c63040..7c77cc1a8 100644 --- a/main/typings.ts +++ b/main/typings.ts @@ -35,7 +35,7 @@ export interface Context { getScheduledRewardsForAddress(): string; getScheduledRewards(): string; - getWalletBalance(): string; + getCheckerWalletBalance(): string; showUI: () => void; isShowingUI: boolean; diff --git a/renderer/src/typings.ts b/renderer/src/typings.ts index e735311a0..16613d06d 100644 --- a/renderer/src/typings.ts +++ b/renderer/src/typings.ts @@ -19,11 +19,11 @@ declare global { config: { getOnboardingCompleted: () => Promise; setOnboardingCompleted: () => Promise; - getWalletAddress: () => Promise; + getCheckerWalletAddress: () => Promise; getDestinationWalletAddress: () => Promise; setDestinationWalletAddress: (address: string | undefined) => Promise; - getWalletBalance: () => Promise; - getWalletTransactionsHistory: () => Promise<(FILTransaction|FILTransactionProcessing)[]>; + getCheckerWalletBalance: () => Promise; + getCheckerWalletTransactionsHistory: () => Promise<(FILTransaction|FILTransactionProcessing)[]>; transferAllFundsToDestinationWallet: () => Promise; openExternalURL: (url: string) => void; toggleOpenAtLogin: () => void; From 91ea13088c742fd90e9c308e80e9264e4efb3d61 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Tue, 11 Feb 2025 15:45:41 +0100 Subject: [PATCH 11/38] clean up --- main/index.js | 2 +- main/typings.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/main/index.js b/main/index.js index 3f7a36b96..79d982151 100644 --- a/main/index.js +++ b/main/index.js @@ -121,7 +121,7 @@ const ctx = { }, getScheduledRewards: () => wallet.getScheduledRewards(), - getCheckerWalletBalance: () => wallet.getBalance(), + getWalletBalance: () => wallet.getBalance(), manualCheckForUpdates: () => { throw new Error('never get here') }, saveModuleLogsAs: () => { throw new Error('never get here') }, diff --git a/main/typings.ts b/main/typings.ts index 7c77cc1a8..140c63040 100644 --- a/main/typings.ts +++ b/main/typings.ts @@ -35,7 +35,7 @@ export interface Context { getScheduledRewardsForAddress(): string; getScheduledRewards(): string; - getCheckerWalletBalance(): string; + getWalletBalance(): string; showUI: () => void; isShowingUI: boolean; From 7f4f6bd75b020a150b86ae6135e3c00d02d4b5c1 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Tue, 11 Feb 2025 15:47:10 +0100 Subject: [PATCH 12/38] clean up --- main/preload.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main/preload.js b/main/preload.js index 01969331b..e416fb2d2 100644 --- a/main/preload.js +++ b/main/preload.js @@ -22,7 +22,7 @@ contextBridge.exposeInMainWorld('electron', { getScheduledRewards: () => ipcRenderer.invoke('checker:getScheduledRewards'), - config: { + checkerConfig: { getOnboardingCompleted: () => ipcRenderer.invoke('checker:getOnboardingCompleted'), setOnboardingCompleted: () => @@ -50,7 +50,7 @@ contextBridge.exposeInMainWorld('electron', { saveModuleLogsAs: () => ipcRenderer.invoke('checker:saveModuleLogsAs'), checkForUpdates: () => ipcRenderer.invoke('checker:checkForUpdates') }, - events: { + checkerEvents: { onActivityLogged: (/** @type {(value: Activity) => void} */ callback) => { /** @type {(event: IpcRendererEvent, ...args: any[]) => void} */ const listener = (_event, activities) => callback(activities) From 29c5e78adf3416fb3613ddf3fcd2dddb0957681f Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Tue, 11 Feb 2025 15:48:08 +0100 Subject: [PATCH 13/38] clean up --- main/tray.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/tray.js b/main/tray.js index ea3a0600a..c490c7cf1 100644 --- a/main/tray.js +++ b/main/tray.js @@ -65,7 +65,7 @@ const createContextMenu = (/** @type {Context} */ ctx) => { { label: `Wallet Balance: ${ - formatTokenValue(ctx.getCheckerWalletBalance()) + formatTokenValue(ctx.getWalletBalance()) } FIL`, enabled: false }, From 49ec966e428e364d85892d2e1d94b2e98f450da7 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Tue, 11 Feb 2025 15:54:23 +0100 Subject: [PATCH 14/38] add migrate seed phrase --- main/wallet-backend.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/main/wallet-backend.js b/main/wallet-backend.js index 732569781..d6ac7474b 100644 --- a/main/wallet-backend.js +++ b/main/wallet-backend.js @@ -100,6 +100,23 @@ class WalletBackend { return { seedIsNew: isNew } } + /** + * @param {string} service + */ + async maybeMigrateSeedPhrase (service) { + try { + await keytar.getPassword(service, 'seed') + return + } catch {} + let seed + try { + seed = await keytar.getPassword('station-wallet-0x', 'seed') + } catch {} + if (seed) { + await keytar.setPassword(service, 'seed', seed) + } + } + /** * @returns {Promise} */ @@ -109,6 +126,7 @@ class WalletBackend { if (!this.disableKeytar) { log.info('Reading the seed phrase from the keychain...') try { + await this.maybeMigrateSeedPhrase(service) seed = await keytar.getPassword(service, 'seed') } catch (err) { throw new Error( From 2f500dd91ec13affd1c731014a5fafd51a8fc238 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Tue, 11 Feb 2025 15:55:44 +0100 Subject: [PATCH 15/38] fix old password key --- main/wallet-backend.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/wallet-backend.js b/main/wallet-backend.js index d6ac7474b..4cd889154 100644 --- a/main/wallet-backend.js +++ b/main/wallet-backend.js @@ -110,7 +110,7 @@ class WalletBackend { } catch {} let seed try { - seed = await keytar.getPassword('station-wallet-0x', 'seed') + seed = await keytar.getPassword('filecoin-station-wallet-0x', 'seed') } catch {} if (seed) { await keytar.setPassword(service, 'seed', seed) From 26be343e48d6d491c9d38ba4b345b02f2df34737 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Tue, 11 Feb 2025 15:56:28 +0100 Subject: [PATCH 16/38] clean up --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 648fc03cf..5a92fd04b 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "checker-app", + "name": "checker", "productName": "Checker", "private": true, "version": "2.3.14", From df61100f36841e146584512711d57171e112828b Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Tue, 11 Feb 2025 15:57:43 +0100 Subject: [PATCH 17/38] clean up --- renderer/src/components/UpdateBanner.tsx | 2 +- renderer/src/hooks/Activity.tsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/renderer/src/components/UpdateBanner.tsx b/renderer/src/components/UpdateBanner.tsx index 137a2a253..52b18925e 100644 --- a/renderer/src/components/UpdateBanner.tsx +++ b/renderer/src/components/UpdateBanner.tsx @@ -12,7 +12,7 @@ const UpdateBanner = () => { } reload() - const unsubscribeUpdateNotification = window.electron.events.onReadyToUpdate(() => { + const unsubscribeUpdateNotification = window.electron.checkerEvents.onReadyToUpdate(() => { setIsReadyToUpdate(true) }) diff --git a/renderer/src/hooks/Activity.tsx b/renderer/src/hooks/Activity.tsx index e020c5430..8c329b2a9 100644 --- a/renderer/src/hooks/Activity.tsx +++ b/renderer/src/hooks/Activity.tsx @@ -24,14 +24,14 @@ const useCheckerActivity = (): CheckerActivity => { }, []) useEffect(() => { - const unsubscribeOnJobProcessed = window.electron.events.onJobProcessed(setTotalJobs) + const unsubscribeOnJobProcessed = window.electron.checkerEvents.onJobProcessed(setTotalJobs) return () => { unsubscribeOnJobProcessed() } }, []) useEffect(() => { - const unsubscribeOnActivityLogged = window.electron.events.onActivityLogged(activity => { + const unsubscribeOnActivityLogged = window.electron.checkerEvents.onActivityLogged(activity => { setActivities(activities => { const updatedActivities = [activity, ...activities] updatedActivities.length = Math.min(updatedActivities.length, 100) From d735dcc565a89bdb64b8d8e1632980e692c40603 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Tue, 11 Feb 2025 15:59:04 +0100 Subject: [PATCH 18/38] clean up --- renderer/src/components/WalletModal.tsx | 12 ++++++------ renderer/src/components/WalletWidget.tsx | 2 +- renderer/src/hooks/{Wallet.tsx => CheckerWallet.tsx} | 0 renderer/src/hooks/Rewards.tsx | 2 +- renderer/src/pages/wallet/BalanceControl.tsx | 2 +- renderer/src/pages/wallet/ConfirmTransfer.tsx | 2 +- renderer/src/pages/wallet/DestinationAddressForm.tsx | 2 +- .../src/pages/wallet/EditDestinationAddressForm.tsx | 2 +- renderer/src/pages/wallet/GridCanvas.tsx | 2 +- renderer/src/pages/wallet/TransferForm.tsx | 2 +- renderer/src/pages/wallet/TransferWrapper.tsx | 2 +- renderer/src/pages/wallet/Wallet.tsx | 2 +- renderer/src/test/dashboard.test.tsx | 2 +- renderer/src/test/wallet-modal.test.tsx | 2 +- renderer/src/test/wallet.test.tsx | 2 +- 15 files changed, 19 insertions(+), 19 deletions(-) rename renderer/src/hooks/{Wallet.tsx => CheckerWallet.tsx} (100%) diff --git a/renderer/src/components/WalletModal.tsx b/renderer/src/components/WalletModal.tsx index fa0f41ff6..ef3bb89d0 100644 --- a/renderer/src/components/WalletModal.tsx +++ b/renderer/src/components/WalletModal.tsx @@ -1,4 +1,4 @@ -import useWallet from 'src/hooks/Wallet' +import useWallet from 'src/hooks/CheckerWallet' import { useDialog } from './DialogProvider' import BorderedBox from './BorderedBox' import Text from './Text' @@ -13,8 +13,8 @@ import TransactionStatusIndicator from './TransactionStatusIndicator' const WalletModal = () => { const { - walletAddress, - walletAddress0x, + checkerAddress, + checkerAddress0x, walletBalance, processingTransaction } = useWallet() @@ -34,12 +34,12 @@ const WalletModal = () => { // Checker address ... :
-
-
+
+
diff --git a/renderer/src/components/WalletWidget.tsx b/renderer/src/components/WalletWidget.tsx index a61dacbf3..891ddf866 100644 --- a/renderer/src/components/WalletWidget.tsx +++ b/renderer/src/components/WalletWidget.tsx @@ -1,4 +1,4 @@ -import useWallet from 'src/hooks/Wallet' +import useWallet from 'src/hooks/CheckerWallet' import WalletIcon from 'src/assets/img/icons/wallet.svg?react' import { useDialog } from './DialogProvider' import { formatFilValue } from 'src/lib/utils' diff --git a/renderer/src/hooks/Wallet.tsx b/renderer/src/hooks/CheckerWallet.tsx similarity index 100% rename from renderer/src/hooks/Wallet.tsx rename to renderer/src/hooks/CheckerWallet.tsx diff --git a/renderer/src/hooks/Rewards.tsx b/renderer/src/hooks/Rewards.tsx index ee51313d6..dc812f4fb 100644 --- a/renderer/src/hooks/Rewards.tsx +++ b/renderer/src/hooks/Rewards.tsx @@ -1,6 +1,6 @@ import { useEffect, useMemo, useState } from 'react' import { getScheduledRewards } from 'src/lib/checker-config' -import useWallet from 'src/hooks/Wallet' +import useWallet from 'src/hooks/CheckerWallet' import { formattedFilToBigInt } from 'src/lib/utils' import { voyagerAirdrop } from './voyagerAirdrop' diff --git a/renderer/src/pages/wallet/BalanceControl.tsx b/renderer/src/pages/wallet/BalanceControl.tsx index d1e60e231..6aef62847 100644 --- a/renderer/src/pages/wallet/BalanceControl.tsx +++ b/renderer/src/pages/wallet/BalanceControl.tsx @@ -1,7 +1,7 @@ import Button from 'src/components/Button' import Text from 'src/components/Text' import { formatFilValue, truncateString } from 'src/lib/utils' -import { Wallet } from 'src/hooks/Wallet' +import { Wallet } from 'src/hooks/CheckerWallet' import Tooltip from 'src/components/Tooltip' import { ReactNode, useState } from 'react' import Transition from 'src/components/Transition' diff --git a/renderer/src/pages/wallet/ConfirmTransfer.tsx b/renderer/src/pages/wallet/ConfirmTransfer.tsx index b71672994..69430b085 100644 --- a/renderer/src/pages/wallet/ConfirmTransfer.tsx +++ b/renderer/src/pages/wallet/ConfirmTransfer.tsx @@ -1,7 +1,7 @@ import BorderedBox from 'src/components/BorderedBox' import Button from 'src/components/Button' import Text from 'src/components/Text' -import { Wallet } from 'src/hooks/Wallet' +import { Wallet } from 'src/hooks/CheckerWallet' import { formatFilValue } from 'src/lib/utils' const ConfirmTransfer = ({ diff --git a/renderer/src/pages/wallet/DestinationAddressForm.tsx b/renderer/src/pages/wallet/DestinationAddressForm.tsx index 29ec3d874..adcb31d0b 100644 --- a/renderer/src/pages/wallet/DestinationAddressForm.tsx +++ b/renderer/src/pages/wallet/DestinationAddressForm.tsx @@ -2,7 +2,7 @@ import Button from 'src/components/Button' import Text from 'src/components/Text' import TextInput from 'src/components/TextInput' import Transition from 'src/components/Transition' -import { Wallet } from 'src/hooks/Wallet' +import { Wallet } from 'src/hooks/CheckerWallet' import useAddressValidation from 'src/hooks/useAddressValidation' const DestinationAddressForm = ({ diff --git a/renderer/src/pages/wallet/EditDestinationAddressForm.tsx b/renderer/src/pages/wallet/EditDestinationAddressForm.tsx index 3152f23d0..90c224d20 100644 --- a/renderer/src/pages/wallet/EditDestinationAddressForm.tsx +++ b/renderer/src/pages/wallet/EditDestinationAddressForm.tsx @@ -1,7 +1,7 @@ import { useEffect, useState } from 'react' import Text from 'src/components/Text' import TextInput from 'src/components/TextInput' -import useWallet from 'src/hooks/Wallet' +import useWallet from 'src/hooks/CheckerWallet' import EditIcon from 'src/assets/img/icons/edit.svg?react' import Button from 'src/components/Button' import useAddressValidation from 'src/hooks/useAddressValidation' diff --git a/renderer/src/pages/wallet/GridCanvas.tsx b/renderer/src/pages/wallet/GridCanvas.tsx index 9800e9eae..3b89af4a0 100644 --- a/renderer/src/pages/wallet/GridCanvas.tsx +++ b/renderer/src/pages/wallet/GridCanvas.tsx @@ -1,5 +1,5 @@ import { useCallback, useEffect, useRef } from 'react' -import { Wallet } from 'src/hooks/Wallet' +import { Wallet } from 'src/hooks/CheckerWallet' import { Grid, getGridConfigForBalance } from 'src/lib/grid' import { FILTransactionProcessing } from 'shared/typings' diff --git a/renderer/src/pages/wallet/TransferForm.tsx b/renderer/src/pages/wallet/TransferForm.tsx index 1cd3b2a51..c7b23290a 100644 --- a/renderer/src/pages/wallet/TransferForm.tsx +++ b/renderer/src/pages/wallet/TransferForm.tsx @@ -1,6 +1,6 @@ import { ChangeEvent, FormEvent, useEffect, useRef, useState } from 'react' import { useDialog } from 'src/components/DialogProvider' -import useWallet from 'src/hooks/Wallet' +import useWallet from 'src/hooks/CheckerWallet' import { validateAddress, addressIsF1 } from 'src/lib/utils' import ConfirmationDialog from './ConfirmationDialog' diff --git a/renderer/src/pages/wallet/TransferWrapper.tsx b/renderer/src/pages/wallet/TransferWrapper.tsx index 3306f1b59..e445ac073 100644 --- a/renderer/src/pages/wallet/TransferWrapper.tsx +++ b/renderer/src/pages/wallet/TransferWrapper.tsx @@ -1,5 +1,5 @@ import Text from 'src/components/Text' -import { Wallet } from 'src/hooks/Wallet' +import { Wallet } from 'src/hooks/CheckerWallet' import DestinationAddressForm from './DestinationAddressForm' import BalanceControl from './BalanceControl' import EditDestinationAddressForm from './EditDestinationAddressForm' diff --git a/renderer/src/pages/wallet/Wallet.tsx b/renderer/src/pages/wallet/Wallet.tsx index 86a557414..aa88ac899 100644 --- a/renderer/src/pages/wallet/Wallet.tsx +++ b/renderer/src/pages/wallet/Wallet.tsx @@ -1,4 +1,4 @@ -import useWallet from 'src/hooks/Wallet' +import useWallet from 'src/hooks/CheckerWallet' import { formatFilValue, openExplorerLink } from 'src/lib/utils' import TransactionHistory from './TransactionHistory' import BorderedBox from 'src/components/BorderedBox' diff --git a/renderer/src/test/dashboard.test.tsx b/renderer/src/test/dashboard.test.tsx index 45d8a8c17..ab9516cb9 100644 --- a/renderer/src/test/dashboard.test.tsx +++ b/renderer/src/test/dashboard.test.tsx @@ -10,7 +10,7 @@ import { getCheckerWalletTransactionsHistory } from 'src/lib/checker-config' import Dashboard from 'src/pages/dashboard/Dashboard' -import useWallet from 'src/hooks/Wallet' +import useWallet from 'src/hooks/CheckerWallet' import useStationActivity from 'src/hooks/Activity' import { Activity } from '../../../shared/typings' import useStationRewards from 'src/hooks/Rewards' diff --git a/renderer/src/test/wallet-modal.test.tsx b/renderer/src/test/wallet-modal.test.tsx index 0cc970c2a..fb7c8970e 100644 --- a/renderer/src/test/wallet-modal.test.tsx +++ b/renderer/src/test/wallet-modal.test.tsx @@ -4,7 +4,7 @@ import '@testing-library/jest-dom' import 'src/lib/checker-config' import Dashboard from 'src/pages/dashboard/Dashboard' import useStationActivity from 'src/hooks/Activity' -import useWallet from 'src/hooks/Wallet' +import useWallet from 'src/hooks/CheckerWallet' import useStationRewards from 'src/hooks/Rewards' import { renderApp, stubGlobalElectron } from './helpers' diff --git a/renderer/src/test/wallet.test.tsx b/renderer/src/test/wallet.test.tsx index 6942a755d..022d9b250 100644 --- a/renderer/src/test/wallet.test.tsx +++ b/renderer/src/test/wallet.test.tsx @@ -1,5 +1,5 @@ import { act, fireEvent, screen, waitFor } from '@testing-library/react' -import useWallet from 'src/hooks/Wallet' +import useWallet from 'src/hooks/CheckerWallet' import { truncateString } from 'src/lib/utils' import { describe, expect, test, vi } from 'vitest' import { renderApp, stubGlobalElectron } from './helpers' From 403ef8dcc59b874b1cfb8617e0fd7e978be4b2ce Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Tue, 11 Feb 2025 15:59:51 +0100 Subject: [PATCH 19/38] clean up --- renderer/src/hooks/{Activity.tsx => CheckerActivity.tsx} | 0 renderer/src/pages/dashboard/ActivityInfo.tsx | 2 +- renderer/src/test/dashboard.test.tsx | 2 +- renderer/src/test/wallet-modal.test.tsx | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) rename renderer/src/hooks/{Activity.tsx => CheckerActivity.tsx} (100%) diff --git a/renderer/src/hooks/Activity.tsx b/renderer/src/hooks/CheckerActivity.tsx similarity index 100% rename from renderer/src/hooks/Activity.tsx rename to renderer/src/hooks/CheckerActivity.tsx diff --git a/renderer/src/pages/dashboard/ActivityInfo.tsx b/renderer/src/pages/dashboard/ActivityInfo.tsx index 0bcb7b39a..23cf4f5f8 100644 --- a/renderer/src/pages/dashboard/ActivityInfo.tsx +++ b/renderer/src/pages/dashboard/ActivityInfo.tsx @@ -1,6 +1,6 @@ import BorderedBox from 'src/components/BorderedBox' import Text from 'src/components/Text' -import useStationActivity from 'src/hooks/Activity' +import useStationActivity from 'src/hooks/CheckerActivity' import WarningIcon from 'src/assets/img/icons/warning.svg?react' import JobIcon from 'src/assets/img/icons/job.svg?react' import { Activity } from 'shared/typings' diff --git a/renderer/src/test/dashboard.test.tsx b/renderer/src/test/dashboard.test.tsx index ab9516cb9..72a83ae10 100644 --- a/renderer/src/test/dashboard.test.tsx +++ b/renderer/src/test/dashboard.test.tsx @@ -11,7 +11,7 @@ import { } from 'src/lib/checker-config' import Dashboard from 'src/pages/dashboard/Dashboard' import useWallet from 'src/hooks/CheckerWallet' -import useStationActivity from 'src/hooks/Activity' +import useStationActivity from 'src/hooks/CheckerActivity' import { Activity } from '../../../shared/typings' import useStationRewards from 'src/hooks/Rewards' import { stubGlobalElectron, renderApp } from './helpers' diff --git a/renderer/src/test/wallet-modal.test.tsx b/renderer/src/test/wallet-modal.test.tsx index fb7c8970e..f527c6267 100644 --- a/renderer/src/test/wallet-modal.test.tsx +++ b/renderer/src/test/wallet-modal.test.tsx @@ -3,7 +3,7 @@ import { fireEvent, act, screen } from '@testing-library/react' import '@testing-library/jest-dom' import 'src/lib/checker-config' import Dashboard from 'src/pages/dashboard/Dashboard' -import useStationActivity from 'src/hooks/Activity' +import useStationActivity from 'src/hooks/CheckerActivity' import useWallet from 'src/hooks/CheckerWallet' import useStationRewards from 'src/hooks/Rewards' import { renderApp, stubGlobalElectron } from './helpers' From 68b982d8e9de73cea37a2491b848f69ea6989128 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Tue, 11 Feb 2025 16:09:54 +0100 Subject: [PATCH 20/38] module -> subnet --- ...ODULE_INTERFACE.md => SUBNET_INTERFACE.md} | 0 main/app-menu.js | 4 +- main/core.js | 4 +- main/index.js | 2 +- main/ipc.js | 4 +- main/preload.js | 2 +- main/typings.ts | 2 +- renderer/src/App.tsx | 4 +- .../img/icons/{modules.svg => subnets.svg} | 0 renderer/src/components/Sidebar.tsx | 8 ++-- renderer/src/hooks/Subnets.tsx | 20 +++++----- renderer/src/lib/checker-config.tsx | 4 +- renderer/src/lib/routes.ts | 2 +- .../src/pages/dashboard/ChartController.tsx | 16 ++++---- renderer/src/pages/settings/Settings.tsx | 10 ++--- .../ModuleCard.tsx => subnets/SubnetCard.tsx} | 38 +++++++++---------- .../Modules.tsx => subnets/Subnets.tsx} | 14 +++---- renderer/src/test/settings.test.tsx | 12 +++--- renderer/src/typings.ts | 2 +- 19 files changed, 74 insertions(+), 74 deletions(-) rename docs/{MODULE_INTERFACE.md => SUBNET_INTERFACE.md} (100%) rename renderer/src/assets/img/icons/{modules.svg => subnets.svg} (100%) rename renderer/src/pages/{modules/ModuleCard.tsx => subnets/SubnetCard.tsx} (70%) rename renderer/src/pages/{modules/Modules.tsx => subnets/Subnets.tsx} (53%) diff --git a/docs/MODULE_INTERFACE.md b/docs/SUBNET_INTERFACE.md similarity index 100% rename from docs/MODULE_INTERFACE.md rename to docs/SUBNET_INTERFACE.md diff --git a/main/app-menu.js b/main/app-menu.js index 426b001df..39bd86003 100644 --- a/main/app-menu.js +++ b/main/app-menu.js @@ -11,8 +11,8 @@ function setupAppMenu (/** @type {import('./typings').Context} */ ctx) { // File menu menu.items[1].submenu?.insert(0, new MenuItem({ - label: 'Save Module Logs As…', - click: () => { ctx.saveModuleLogsAs() } + label: 'Save Subnet Logs As…', + click: () => { ctx.saveSubnetLogsAs() } })) Menu.setApplicationMenu(menu) diff --git a/main/core.js b/main/core.js index a5cb9551d..69f37ca0c 100644 --- a/main/core.js +++ b/main/core.js @@ -35,9 +35,9 @@ let totalJobsCompleted = 0 * @param {Context} ctx */ async function setup (ctx) { - ctx.saveModuleLogsAs = async () => { + ctx.saveSubnetLogsAs = async () => { const opts = { - defaultPath: `checker-modules-${(new Date()).getTime()}.log` + defaultPath: `checker-subnets-${(new Date()).getTime()}.log` } // The dialog might not show if the UI is hidden ctx.showUI() diff --git a/main/index.js b/main/index.js index 79d982151..2a5d2e077 100644 --- a/main/index.js +++ b/main/index.js @@ -124,7 +124,7 @@ const ctx = { getWalletBalance: () => wallet.getBalance(), manualCheckForUpdates: () => { throw new Error('never get here') }, - saveModuleLogsAs: () => { throw new Error('never get here') }, + saveSubnetLogsAs: () => { throw new Error('never get here') }, toggleOpenAtLogin: () => { throw new Error('never get here') }, isOpenAtLogin: () => { throw new Error('never get here') }, exportSeedPhrase: () => { throw new Error('never get here') }, diff --git a/main/ipc.js b/main/ipc.js index ff27b621f..43d1082e0 100644 --- a/main/ipc.js +++ b/main/ipc.js @@ -88,8 +88,8 @@ function setupIpcMain (/** @type {Context} */ ctx) { (_events) => ctx.exportSeedPhrase() ) ipcMain.handle( - 'checker:saveModuleLogsAs', - (_events) => ctx.saveModuleLogsAs() + 'checker:saveSubnetLogsAs', + (_events) => ctx.saveSubnetLogsAs() ) ipcMain.handle( 'checker:checkForUpdates', diff --git a/main/preload.js b/main/preload.js index e416fb2d2..d70b12fa3 100644 --- a/main/preload.js +++ b/main/preload.js @@ -47,7 +47,7 @@ contextBridge.exposeInMainWorld('electron', { ipcRenderer.invoke('checker:toggleOpenAtLogin'), isOpenAtLogin: () => ipcRenderer.invoke('checker:isOpenAtLogin'), exportSeedPhrase: () => ipcRenderer.invoke('checker:exportSeedPhrase'), - saveModuleLogsAs: () => ipcRenderer.invoke('checker:saveModuleLogsAs'), + saveSubnetLogsAs: () => ipcRenderer.invoke('checker:saveSubnetLogsAs'), checkForUpdates: () => ipcRenderer.invoke('checker:checkForUpdates') }, checkerEvents: { diff --git a/main/typings.ts b/main/typings.ts index 140c63040..d8df58b84 100644 --- a/main/typings.ts +++ b/main/typings.ts @@ -41,7 +41,7 @@ export interface Context { isShowingUI: boolean; loadWebUIFromDist: import('electron-serve').loadURL; manualCheckForUpdates: () => void; - saveModuleLogsAs: () => Promise; + saveSubnetLogsAs: () => Promise; openReleaseNotes: () => void; restartToUpdate: () => void; diff --git a/renderer/src/App.tsx b/renderer/src/App.tsx index aaaa4025a..1a3390cc2 100644 --- a/renderer/src/App.tsx +++ b/renderer/src/App.tsx @@ -9,7 +9,7 @@ import { ROUTES } from 'src/lib/routes' import Layout from 'src/components/Layout' import Settings from 'src/pages/settings/Settings' import Wallet from 'src/pages/wallet/Wallet' -import Modules from 'src/pages/modules/Modules' +import Subnets from 'src/pages/subnets/Subnets' import { DialogProvider } from './components/DialogProvider' import { TooltipProvider } from '@radix-ui/react-tooltip' @@ -34,7 +34,7 @@ const App = ():JSX.Element => { } /> } /> } /> - } /> + } /> } diff --git a/renderer/src/assets/img/icons/modules.svg b/renderer/src/assets/img/icons/subnets.svg similarity index 100% rename from renderer/src/assets/img/icons/modules.svg rename to renderer/src/assets/img/icons/subnets.svg diff --git a/renderer/src/components/Sidebar.tsx b/renderer/src/components/Sidebar.tsx index 7cf06fabd..63205a76b 100644 --- a/renderer/src/components/Sidebar.tsx +++ b/renderer/src/components/Sidebar.tsx @@ -2,7 +2,7 @@ import { useState } from 'react' import { NavLink } from 'react-router' import { ROUTES } from 'src/lib/routes' import HomeIcon from 'src/assets/img/icons/home.svg?react' -import ModulesIcon from 'src/assets/img/icons/modules.svg?react' +import SubnetsIcon from 'src/assets/img/icons/subnets.svg?react' import WalletIcon from 'src/assets/img/icons/wallet.svg?react' import SettingsIcon from 'src/assets/img/icons/settings.svg?react' import MenuArrow from 'src/assets/img/icons/menu-arrow.svg?react' @@ -17,9 +17,9 @@ const links = [ Icon: HomeIcon }, { - href: ROUTES.modules, - title: 'Modules', - Icon: ModulesIcon + href: ROUTES.subnets, + title: 'Subnets', + Icon: SubnetsIcon }, { href: ROUTES.wallet, diff --git a/renderer/src/hooks/Subnets.tsx b/renderer/src/hooks/Subnets.tsx index 57c2e5604..1c2b58826 100644 --- a/renderer/src/hooks/Subnets.tsx +++ b/renderer/src/hooks/Subnets.tsx @@ -4,7 +4,7 @@ import SparkLogo from 'src/assets/img/icons/spark-logo.png' import SaturnLogo from 'src/assets/img/icons/saturn-logo.svg' /** - * @returns {Promise} The contract address of the Spark module + * @returns {Promise} The contract address of the Spark subnet */ async function getSparkContractAddress () { const name = Name.parse( @@ -82,7 +82,7 @@ async function getSparkTransfersFromStats () { } /** - * @returns {Promise} The total rewards of the Spark module + * @returns {Promise} The total rewards of the Spark subnet */ async function getSparkTotalRewards () { const [balanceHeld, transfersFromStats] = await Promise.all([ @@ -94,7 +94,7 @@ async function getSparkTotalRewards () { } /* eslint-disable max-len */ -export const modules = { +export const subnets = { spark: { name: 'Spark', description: 'Spark is a trustless protocol for sampling retrievals from Filecoin Storage Providers. Spark aims to drive improvements in the retrievability of data stored on Filecoin.', @@ -131,9 +131,9 @@ export const modules = { } } as const -export type Module = (typeof modules)[keyof typeof modules] & {id: string} +export type Subnet = (typeof subnets)[keyof typeof subnets] & {id: string} -export const useModules = () => { +export const useSubnets = () => { const [sparkContractAddress, setSparkContractAddress] = useState() const [sparkTotalRewards, setSparkTotalRewards] = useState(0) @@ -151,19 +151,19 @@ export const useModules = () => { load() }, []) - const modulesUpdated = { - ...modules, + const subnetsUpdated = { + ...subnets, spark: { - ...modules.spark, + ...subnets.spark, contractAddress: sparkContractAddress, stats: { - ...modules.spark.stats, + ...subnets.spark.stats, totalRewards: sparkTotalRewards } } } return { - modules: Object.entries(modulesUpdated).map(([id, mod]) => ({ ...mod, id })) as Module[] + subnets: Object.entries(subnetsUpdated).map(([id, subnet]) => ({ ...subnet, id })) as Subnet[] } } diff --git a/renderer/src/lib/checker-config.tsx b/renderer/src/lib/checker-config.tsx index 735bbb7e6..b29233c76 100644 --- a/renderer/src/lib/checker-config.tsx +++ b/renderer/src/lib/checker-config.tsx @@ -88,8 +88,8 @@ export function exportSeedPhrase () { return window.electron.checkerConfig.exportSeedPhrase() } -export function saveModuleLogsAs () { - return window.electron.checkerConfig.saveModuleLogsAs() +export function saveSubnetLogsAs () { + return window.electron.checkerConfig.saveSubnetLogsAs() } export function checkForUpdates () { diff --git a/renderer/src/lib/routes.ts b/renderer/src/lib/routes.ts index 236f4c8fb..3d85f7bb2 100644 --- a/renderer/src/lib/routes.ts +++ b/renderer/src/lib/routes.ts @@ -1,7 +1,7 @@ export const ROUTES = { onboarding: '/', dashboard: '/dashboard', - modules: '/modules', + subnets: '/subnets', settings: '/settings', wallet: '/wallet' } as const diff --git a/renderer/src/pages/dashboard/ChartController.tsx b/renderer/src/pages/dashboard/ChartController.tsx index c44b5f1c4..919f6e718 100644 --- a/renderer/src/pages/dashboard/ChartController.tsx +++ b/renderer/src/pages/dashboard/ChartController.tsx @@ -26,19 +26,19 @@ function getDataInTimeRange (data: RewardsRecord[], timeRange: TimeRange) { const ChartController = ({ historicalRewards }: {historicalRewards: RewardsRecord[]}) => { const [timeRange, setTimeRange] = useState('7d') - const [moduleId, setModuleId] = useState('all') + const [subnetId, setSubnetId] = useState('all') const filteredHistoricalRewards = useMemo( () => getDataInTimeRange(historicalRewards, timeRange), [timeRange, historicalRewards] ) - const moduleIdsInRange = useMemo( + const subnetIdsInRange = useMemo( () => filteredHistoricalRewards.reduce( (acc, record) => [ ...acc, ...Object.keys(record.totalScheduledRewards).filter((id) => !acc.includes(id)) - ], ['All modules'] + ], ['All subnets'] ), [filteredHistoricalRewards]) return ( @@ -61,13 +61,13 @@ const ChartController = ({ historicalRewards }: {historicalRewards: RewardsRecor ))}