mirror of
https://github.com/thepeacockproject/Peacock
synced 2024-11-22 22:12:45 +01:00
Added fallback for loadSession in case someone might have disconnected. (#191)
This commit is contained in:
parent
21b3663c50
commit
b8a68820d9
@ -829,8 +829,21 @@ async function loadSession(
|
|||||||
sessionData?: ContractSession,
|
sessionData?: ContractSession,
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
if (!sessionData) {
|
if (!sessionData) {
|
||||||
sessionData = await getContractSession(token + "_" + sessionId)
|
try {
|
||||||
|
//First, try the loading the session from the filesystem.
|
||||||
|
sessionData = await getContractSession(token + "_" + sessionId)
|
||||||
|
} catch (e) {
|
||||||
|
//Otherwise, see if we still have this session in memory.
|
||||||
|
//This may be the currently active session, but we need a fallback of some sorts in case a player disconnected.
|
||||||
|
if (contractSessions.has(sessionId)) {
|
||||||
|
sessionData = contractSessions.get(sessionId)
|
||||||
|
} else {
|
||||||
|
//Rethrow the error
|
||||||
|
throw e
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update challenge progression with the user's latest progression data
|
// Update challenge progression with the user's latest progression data
|
||||||
for (const cid in sessionData.challengeContexts) {
|
for (const cid in sessionData.challengeContexts) {
|
||||||
// Make sure the ChallengeProgression is available, otherwise loading might fail!
|
// Make sure the ChallengeProgression is available, otherwise loading might fail!
|
||||||
|
Loading…
Reference in New Issue
Block a user