@ exodus/ 应用程序
这个 application 软件包代表高级应用程序
使用出埃及语SDK.
目录
如何运作
它协调创建、进口、删除和恢复 钱包,处理安全方面,如锁定和密码句 管理,并为其他组件提供灵活的钩子系统 应对生命周期事件.
使用量
该功能作为以下内容的一部分: @exodus/headless,没有
需要单独安装.
关于在API和UI方面使用这一特性的例子, 请参考相关的 SDK游乐场页面。 。 。 .
生命周期钩
在使用Exodus SDK时,应用程序可以订阅多个
生命周期钩,在 application 软件包.
钩子的订阅通过注册办理 plugin 节点
对IoC容器。 插件可以导出若干不同的
钩子,在相应的生命周期事件发生时被引用.
例如,如果您想要在应用程序时运行一些代码 启动时,您可以创建这样的插件 :
const plugin = () => {
const onStart = ({ isBackedUp }) => {
// Run some code when the application starts
}
return {
onStart,
}
}
const myPluginDefinition = {
id: 'myPlugin', // unique id
type: 'plugin', // type of the node
factory: plugin, // factory function
}
可用的钩子
一些钩子接收到参数,如果是,则在下面记录.
onStart: 应用程序启动时触发. 打电话{ walletExists, hasPassphraseSet, isLocked, isBackedUp, isRestoring }。 。 。 .onRestart: 应用程序重新启动时触发. 打电话{ reason }以及其他参数(视原因而定).onStop: 应用程序停止时触发.onLoad:不要使用这个钩. 其唯一目的是黑客支持浏览器扩展,UI可能会死后被重生而同时背景过程是长生. 在这种情况下,onLoad当新的 UI 被重新创建并连接到背景进程时,就会被触发。 调用相同的参数onStart。 。 。 .onUnload: 应用程序卸下时触发,即,,, 应用程序关闭.onCreate: 当新建钱包时触发 。 打电话{ walletExists, hasPassphraseSet, isLocked, isBackedUp, isRestoring, seedId, createResult }。 。 。 .onImport: 当钱包被导入时触发 。 打电话{ seedId, compatibilityMode, backupType, importResult }。 。 。 .onDelete: 删除钱包时触发.onRestore: 当钱包(主种子)恢复进程启动时触发。 打电话{ backupType }。 。 。 .onRestoreCompleted: 当钱包种子恢复过程完成时触发. 打电话{ backupType }。 。 。 .onAssetsSynced:当资产同步时触发.onChangePassphrase:密码句被更改后触发.onLock:应用程序被锁定时触发.onUnlock: 应用程序解锁后触发.onClear: 应用程序被清除时触发,即, 在删除当前钱包后。 Hook 函数同时执行 .
视觉表现
您可以在下面找到一个可视化状态过渡间触发的钩子的状态图 :
stateDiagram-v2
direction LR
[*] --> Starting
state Starting {
direction LR
state "Needs clear storage?*" as NeedsClear
state "Is importing?" as IsImporting
NeedsClear --> Clearing : CLEAR
Clearing --> IsImporting
IsImporting --> Importing : IMPORT
}
Starting --> Started : START
state Started {
direction LR
state "Has seed?" as HasSeed
HasSeed --> Empty : No
HasSeed --> Locked : Yes
Empty --> Locked : CREATE \n---or---\nIMPORT
Locked --> Migrating : MIGRATE
Migrating --> Unlocked : UNLOCK
Unlocked --> Locked : LOCK
Unlocked --> Restarting : DELETE
}
Restarting --> [*] : RESTART
Started --> Started : LOAD
classDef conditional fill:#ededed,stroke:#c2c2c2,color:#a6a6a6,stroke-width:2;
class NeedsClear conditional
class IsImporting conditional
class HasSeed conditional
* 如果种子不存在或正在恢复一个新的钱包,钱包需要清除存储