feat: Challenges Page and Challenge Solve Modal 1.04
This commit is contained in:
@@ -72,8 +72,25 @@ export class ChallengesStore {
|
||||
private sse: EventSourceLike | null = null;
|
||||
private countdownZeroHandler: (() => void) | null = null;
|
||||
|
||||
setMyUserId(id: string | null): void {
|
||||
setMyUserId(id: string | null): string | null {
|
||||
const prev = this._myUserId();
|
||||
const hasCachedUserData = this._board() !== null || this._selectedDetail() !== null;
|
||||
if (hasCachedUserData && prev !== id) {
|
||||
this.reset();
|
||||
}
|
||||
this._myUserId.set(id);
|
||||
return prev;
|
||||
}
|
||||
|
||||
reset(): void {
|
||||
this.stop();
|
||||
this._board.set(null);
|
||||
this._selectedDetail.set(null);
|
||||
this._myUserId.set(null);
|
||||
this._error.set(null);
|
||||
this._loading.set(false);
|
||||
this.countdownZeroHandler = null;
|
||||
this.solveListeners.clear();
|
||||
}
|
||||
|
||||
async load(): Promise<void> {
|
||||
@@ -224,7 +241,7 @@ export class ChallengesStore {
|
||||
...card,
|
||||
livePoints: payload.livePoints ?? card.livePoints,
|
||||
solveCount: payload.solveCount ?? card.solveCount + 1,
|
||||
solvedByMe: card.solvedByMe || isMine,
|
||||
solvedByMe: isMine ? true : card.solvedByMe,
|
||||
};
|
||||
}),
|
||||
})),
|
||||
@@ -246,7 +263,7 @@ export class ChallengesStore {
|
||||
...detail.challenge,
|
||||
livePoints,
|
||||
solveCount,
|
||||
solvedByMe: detail.challenge.solvedByMe || isMine,
|
||||
solvedByMe: isMine ? true : detail.challenge.solvedByMe,
|
||||
},
|
||||
solvers: mergeSolveEventIntoSolvers(detail.solvers, payload),
|
||||
});
|
||||
@@ -266,7 +283,7 @@ export class ChallengesStore {
|
||||
...card,
|
||||
livePoints: response.challenge.livePoints,
|
||||
solveCount: response.challenge.solveCount,
|
||||
solvedByMe: response.challenge.solvedByMe || card.solvedByMe,
|
||||
solvedByMe: response.challenge.solvedByMe,
|
||||
};
|
||||
}),
|
||||
})),
|
||||
|
||||
Reference in New Issue
Block a user