fix(platform): await session startup before register IPC returns
Register was racing pushState ahead of sessionReady, leaving the UI on the session-restore shell instead of onboarding. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
@@ -1113,7 +1113,7 @@ class PearcordPlatform extends EventEmitter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async _bootstrapAfterUser (user) {
|
async _bootstrapAfterUser (user, { waitSessionStartup = false } = {}) {
|
||||||
this.onboarded = true
|
this.onboarded = true
|
||||||
writeOnboardedMarker(this.storagePath)
|
writeOnboardedMarker(this.storagePath)
|
||||||
this.presence = new PearcordPresence({ userId: user.id })
|
this.presence = new PearcordPresence({ userId: user.id })
|
||||||
@@ -1200,7 +1200,9 @@ class PearcordPlatform extends EventEmitter {
|
|||||||
this._lastVoiceSpeakingGossipKey = ''
|
this._lastVoiceSpeakingGossipKey = ''
|
||||||
this._lastVoiceSpeakingGossipAt = 0
|
this._lastVoiceSpeakingGossipAt = 0
|
||||||
this.guilds = await this.listGuilds()
|
this.guilds = await this.listGuilds()
|
||||||
void this._finishSessionStartup()
|
const startup = this._finishSessionStartup()
|
||||||
|
if (waitSessionStartup) await startup
|
||||||
|
else void startup
|
||||||
this.emit('user', user)
|
this.emit('user', user)
|
||||||
return user
|
return user
|
||||||
}
|
}
|
||||||
@@ -1917,11 +1919,12 @@ class PearcordPlatform extends EventEmitter {
|
|||||||
const user = await this.identity.register({ username, displayName })
|
const user = await this.identity.register({ username, displayName })
|
||||||
this.guilds = []
|
this.guilds = []
|
||||||
this.mode = 'home'
|
this.mode = 'home'
|
||||||
const boot = await this._bootstrapAfterUser(user)
|
const boot = await this._bootstrapAfterUser(user, { waitSessionStartup: true })
|
||||||
span.end({
|
span.end({
|
||||||
userId: user?.id || null,
|
userId: user?.id || null,
|
||||||
guildCount: this.guilds?.length ?? 0,
|
guildCount: this.guilds?.length ?? 0,
|
||||||
activeChannelId: this.activeChannelId || null,
|
activeChannelId: this.activeChannelId || null,
|
||||||
|
sessionReady: this._sessionReady,
|
||||||
spanKind: 'identity.register'
|
spanKind: 'identity.register'
|
||||||
})
|
})
|
||||||
return boot
|
return boot
|
||||||
|
|||||||
Reference in New Issue
Block a user