Anchor与Scatter一起用

一、登录时选择钱包

  1. 把选择的钱包写入本地存储,最好写入sessionStorage中,这样页面关闭时就不存在了,下次页面重新打开需要重新登录。 注意:如果是APLink访问,则不需要选择Anchor钱包,毕竟没办法扫码自己。

export const isAPLink = window.navigator.userAgent
  .toLowerCase()
  .includes('aplink');

如果是APlink访问,直接选择第一个钱包,即scatter,否则弹出钱包选择框,让用户自己选择钱包。

         <div
            className={styles.btn}
            onClick={() => isAPLink ? selectWallet(walletList[0]) : setShowWalletList(true)}
          >
            {intl.get('connectWallet')}
          </div>
  1. 如果是anchor登录,需要把link实例存放好,因为无关页面渲染,所以在NFTone中直接存入全局变量中。

export function initLink() {
  if (!window.__LINK__) {
    const transport = new AnchorLinkBrowserTransport();
    const link = new AnchorLink({
      transport,
      service: "https://fwd.aplink.app", // 'ws://192.168.80.152:7001', // 'http://fwd.aplink.app', //
      chains: [
        {
          chainId: network.chainId,
          nodeUrl: `${network.protocol}://${network.host}`,
        },
      ],
    });
    window.__LINK__ = link;
  }
  return window.__LINK__;
}

// 登录
export async function login(dispatch) {
  const link = initLink();
  const identity = await link.login(scope);
  // ...
}

二、具体交易的发起

  • 写个工具函数实现不同钱包发起交易不同

  • 然后我们就可以愉快的修改以前基于Scatter写的代码了。

修改为

是不是很简单

三、不依赖钱包的链上查询,则使用 '@amax/amaxjs来实现

如何与后端进行登录验证?

最后更新于