ionic2 打包的app中,rxjs在首页订阅的信息,如何用alert显示在其他页面?

发布于 2022-09-06 01:51:40 字数 1688 浏览 14 评论 0

现在做的项目是这样,在首页订阅用户的登录信息,延时触发向服务器的某个请求。

登录页是个modal页,可以在任何需要验证登录的时候调起。首页home页,也就是第一Tab页面,会在初始化的时候订阅用户信息。判断有了用户登陆成功之后,会调用服务器的一个接口,判断是否是新用户;如果是新用户,服务器返回的数据包含true的判断,就会在首页弹出一个新人红包的alert提示。

// home页 初始化 订阅用户信息,一旦登陆,发送请求给服务器
this.accountInfo$ = this.store.select(Selectors.UserAccount.getAccount)
this.accountInfoSubscription = this.accountInfo$.subscribe(data => {
  this.accountInfo = data
  if (this.accountInfo && this.accountInfo.id) {
    setTimeout(() => {
      this.store.dispatch(new Actions.UserAccount.DrawPrizeActivity())
    }, 5000) // 推迟发送,避免和首页弹屏同时出现
  }
})


// 处理新注册红包的结果
this.drawPrizeResultSubscription = this.store.select(Selectors.UserAccount.getDrawPrizeResult).subscribe(res => {
  if (res && res.success) { 
    const prize = res.prize
    const prizeName = prize.name
    const moduleType = res.moduleType
    const msg = '恭喜您获得:' + prizeName
    const buttons: any = [
      {
        text: '知道了', 
        handler: () => { }
      }
    ]
    if (moduleType === 'ACCOUNT') {
      buttons.push({
        text: '去个人中心',
        cssClass: 'special',
        handler: () => {
          this.navCtrl.parent.select(4)
        }
      })
    }

    const alert = this.alertCtrl.create({
      cssClass: 'custom-alert',
      subTitle: '<img src="assets/custom-alert/gaoxing.png" alt="">',
      message: msg,
      buttons: buttons
    })
    alert.present()

  }
})

问题来了,其他页面也有需要用户登录权限,一旦在别的页面比如设置页面调起登录modal页,登陆成功后会留在设置页面。但是首页的订阅以及调用服务器的请求都会执行。而如果是新用户,红包alert会在home页面弹出,不会在当前的设置页面出现。

问题: 是否可以将订阅用户信息和调用服务器接口的处理放在全局来做,在任何页面调起登录页成功后返回之前页面,同时弹出新用户红包alert提示?如果可行,如何做?或者有没有别的方法解决这种操作?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文