fix pinning after a group is solved and dont persist selection
This commit is contained in:
parent
da0284f294
commit
f67606b944
1 changed files with 15 additions and 9 deletions
|
@ -19,7 +19,6 @@ type AppStore = {
|
||||||
selected: number[];
|
selected: number[];
|
||||||
solvedGroups: Answer[];
|
solvedGroups: Answer[];
|
||||||
puzzle: number[];
|
puzzle: number[];
|
||||||
get answers(): Answer[];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function useAppModel() {
|
export default function useAppModel() {
|
||||||
|
@ -32,16 +31,23 @@ export default function useAppModel() {
|
||||||
selected: [],
|
selected: [],
|
||||||
solvedGroups: [],
|
solvedGroups: [],
|
||||||
puzzle: shuffleArray(Array.from({ length: 16 }, (_, i) => i)),
|
puzzle: shuffleArray(Array.from({ length: 16 }, (_, i) => i)),
|
||||||
get answers(): Answer[] {
|
|
||||||
return connections.find((x) => x.id === store.puzzleId)!.answers;
|
|
||||||
},
|
|
||||||
}),
|
}),
|
||||||
{
|
{
|
||||||
name: "slick-connections",
|
name: "slick-connections",
|
||||||
storage,
|
storage,
|
||||||
|
serialize(data) {
|
||||||
|
return JSON.stringify({
|
||||||
|
...data,
|
||||||
|
selected: [],
|
||||||
|
});
|
||||||
|
},
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const answers = (): Answer[] => {
|
||||||
|
return connections.find((x) => x.id === store.puzzleId)!.answers;
|
||||||
|
};
|
||||||
|
|
||||||
const handleSelectGame = (newId: number) => {
|
const handleSelectGame = (newId: number) => {
|
||||||
setStore({
|
setStore({
|
||||||
puzzleId: newId,
|
puzzleId: newId,
|
||||||
|
@ -55,16 +61,16 @@ export default function useAppModel() {
|
||||||
const getFromPuzzle = (index: number) => {
|
const getFromPuzzle = (index: number) => {
|
||||||
const puzzleIndex = store.puzzle[index];
|
const puzzleIndex = store.puzzle[index];
|
||||||
const [groupIndex, memberIndex] = fromIndex(puzzleIndex);
|
const [groupIndex, memberIndex] = fromIndex(puzzleIndex);
|
||||||
const group = store.answers[groupIndex];
|
const group = answers()[groupIndex];
|
||||||
return {
|
return {
|
||||||
group: group.group,
|
group: group.group,
|
||||||
level: group.level,
|
level: group.level,
|
||||||
answer: store.answers[groupIndex].members[memberIndex],
|
answer: answers()[groupIndex].members[memberIndex],
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleGuess = () => {
|
const handleGuess = () => {
|
||||||
const selected = store.puzzle.length === 4 ? [0, 1, 2, 3] : store.selected
|
const selected = store.puzzle.length === 4 ? [0, 1, 2, 3] : store.selected;
|
||||||
const selectedAnswers = selected.map((x) => getFromPuzzle(x));
|
const selectedAnswers = selected.map((x) => getFromPuzzle(x));
|
||||||
const { level } = selectedAnswers[0];
|
const { level } = selectedAnswers[0];
|
||||||
const isCorrect = selectedAnswers.every((x) => x.level === level);
|
const isCorrect = selectedAnswers.every((x) => x.level === level);
|
||||||
|
@ -84,7 +90,7 @@ export default function useAppModel() {
|
||||||
),
|
),
|
||||||
selected: [],
|
selected: [],
|
||||||
});
|
});
|
||||||
const newSolvedGroup = store.answers.find((x) => x.level === level);
|
const newSolvedGroup = answers().find((x) => x.level === level);
|
||||||
if (newSolvedGroup != null) {
|
if (newSolvedGroup != null) {
|
||||||
setStore({
|
setStore({
|
||||||
solvedGroups: [...store.solvedGroups, newSolvedGroup],
|
solvedGroups: [...store.solvedGroups, newSolvedGroup],
|
||||||
|
@ -131,7 +137,7 @@ export default function useAppModel() {
|
||||||
.filter((x) => x >= store.pinnedCount)
|
.filter((x) => x >= store.pinnedCount)
|
||||||
.map((x) => store.puzzle[x]);
|
.map((x) => store.puzzle[x]);
|
||||||
const puzzleEnd = Array.from(
|
const puzzleEnd = Array.from(
|
||||||
{ length: 16 - store.pinnedCount },
|
{ length: store.puzzle.length - store.pinnedCount },
|
||||||
(_, i) => i + store.pinnedCount
|
(_, i) => i + store.pinnedCount
|
||||||
)
|
)
|
||||||
.filter((x) => !store.selected.includes(x))
|
.filter((x) => !store.selected.includes(x))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue