Skip to content

Commit

Permalink
Draft of total summary
Browse files Browse the repository at this point in the history
  • Loading branch information
Deykun committed Jul 29, 2024
1 parent 0865d49 commit 352abb6
Show file tree
Hide file tree
Showing 9 changed files with 227 additions and 2 deletions.
2 changes: 2 additions & 0 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import Game from '@components/Panes/Game/Game';
import Help from '@components/Panes/Help/Help';
import Settings from '@components/Panes/Settings/Settings';
import Statistics from '@components/Panes/Statistics/Statistics';
import Summary from '@components/Panes/Summary/Summary';
import AboutLanguage from '@components/Panes/AboutLanguage/AboutLanguage';

import Toast from '@components/Toast/Toast';
Expand Down Expand Up @@ -77,6 +78,7 @@ function App() {
{pane === PaneType.Game && <Game />}
{pane === PaneType.Settings && <Settings />}
{pane === PaneType.Statistics && <Statistics />}
{pane === PaneType.Summary && <Summary />}
{pane === PaneType.AboutLanguage && <AboutLanguage />}
</main>
<CookiesPopup />
Expand Down
6 changes: 6 additions & 0 deletions src/components/Panes/Statistics/constants.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@ import {
Filters, ModeFilter, CharactersFilter, LengthFilter,
} from '@utils/statistics';

export const ALL_DATA_FILTERS: Filters = {
modeFilter: ModeFilter.All,
charactersFilter: CharactersFilter.All,
lengthFilter: LengthFilter.All,
};

export const INITIAL_FILTERS: Filters = {
modeFilter: ModeFilter.Daily,
charactersFilter: CharactersFilter.All,
Expand Down
Empty file.
49 changes: 49 additions & 0 deletions src/components/Panes/Summary/Summary.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import { useMemo } from 'react';
import { SUPPORTED_LANGS } from '@const';
import {
StatisticDataForCard,
Statistic,
getStatisticForFilter,
mergeStatistics,
getStatisticCardDataFromStatistics,
} from '@utils/statistics';

import { ALL_DATA_FILTERS } from '@components/Panes/Statistics/constants';

import SummaryAll from './SummaryAll';

import './Summary.scss';

const Summary = () => {
const { all, byLang } = useMemo(() => {
const statisticsByLang = SUPPORTED_LANGS.reduce((stack: { [lang: string]: Statistic }, lang) => {
const statisticForLang = getStatisticForFilter(lang, ALL_DATA_FILTERS);
if (statisticForLang.totals.won > 0) {
stack[lang] = getStatisticForFilter(lang, ALL_DATA_FILTERS);
}

return stack;
}, {});

const allLangs = mergeStatistics(Object.values(statisticsByLang));

return {
all: getStatisticCardDataFromStatistics(allLangs),
byLang: {
...Object.entries(statisticsByLang).reduce((stack: { [lang: string]: StatisticDataForCard }, [lang, statistic]) => {
stack[lang] = getStatisticCardDataFromStatistics(statistic);

return stack;
}, {}),
},
};
}, []);

return (
<div className="summary">
<SummaryAll all={all} byLang={byLang} />
</div>
);
};

export default Summary;
30 changes: 30 additions & 0 deletions src/components/Panes/Summary/SummaryAll.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
.summary-all {
color: black;
fill: currentColor;
width: 100%;
margin: 0 auto;
padding: 10px;
border-radius: 8px;
background-color: var(--green);
display: flex;
align-items: center;
justify-content: space-between;
}

.summary-all-langs {
display: flex;
gap: 4px;

.summary-all-flag {
height: 24px;
width: 24px;
border-radius: 12px;
filter: saturate(0.6);
font-size: 0;
color: transparent;
object-fit: cover;
object-position: center;
background-color: var(--flag-shadow);
box-shadow: 0 -1px 4px var(--flag-shadow);
}
}
52 changes: 52 additions & 0 deletions src/components/Panes/Summary/SummaryAll.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import clsx from 'clsx';

Check failure on line 1 in src/components/Panes/Summary/SummaryAll.tsx

View workflow job for this annotation

GitHub Actions / Build

'clsx' is declared but its value is never read.
import {
StatisticDataForCard,
} from '@utils/statistics';

import Image from '@components/Image/Image';

import './SummaryAll.scss';

type Props = {
all: StatisticDataForCard,
byLang: {
[lang: string]: StatisticDataForCard
},
};

const SummaryAll = ({ all, byLang }: Props) => {
return (
<div className="summary-all">
<div className="summary-all-numbers">
{all.totalGames}
{' '}
played
{all.totalWon}
{' '}
won
{all.totalLost}
{' '}
lost
in
{' '}
{all.totalTime.hours}
h
{all.totalTime.minutes}
m
{all.totalTime.seconds}
s
</div>
<div className="summary-all-langs">
{Object.keys(byLang).map(lang => (
<Image
className="summary-all-flag"
src={`./flags/${lang}.svg`}
alt=""
/>
))}
</div>
</div>
);
};

export default SummaryAll;
77 changes: 77 additions & 0 deletions src/components/Panes/Summary/copy-data.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
const data = {
diffle_stats_en_practice_no_special_long: '{"meta":["diffle_stats_en_practice_no_special_long"],"totals":{"won":3,"lost":2,"letters":147,"words":27,"rejectedWords":36,"keyboardUsagePercentage":0,"durationMS":447573},"medianData":{"letters":{"37":1,"50":1,"60":1},"words":{"7":1,"8":1,"12":1},"rejectedWords":{"2":1,"16":1,"18":1}},"letters":{"keyboardUsed":72,"correct":95,"position":9,"incorrect":43,"typedKnownIncorrect":5},"firstWord":{"letters":13},"secondWord":{"letters":14},"lastGame":{"word":"primeval","letters":8,"words":8,"rejectedWords":2,"durationMS":111962}}',
diffle_streak_pl_daily: '{"wonStreak":114,"lostStreak":0,"bestStreak":114,"worstStreak":0}',
diffle_pl_mode_practice: '{"status":"won","wordToGuess":"cegła","guessesWords":["łowić","małpy","słabe","cegła"],"rejectedWords":[],"lastUpdateTime":1720468479905,"durationMS":54872}',
diffle_practice: '{"wordToGuess":"delfin","guessesWords":["fik","fidel","delfin"]}',
diffle_en_mode_practice: '{"status":"won","wordToGuess":"primeval","guessesWords":["gamer","rome","meat","bunch","sid","mela","piky","primeval"],"rejectedWords":["mermeval","primevala"],"lastUpdateTime":1715752575279,"durationMS":111962}',
diffle_daily_stamp: '08.01.2024',
diffle_stats_en_practice_no_special_short: '{"meta":["diffle_stats_en_practice_no_special_short"],"totals":{"won":6,"lost":0,"letters":184,"words":38,"rejectedWords":28,"keyboardUsagePercentage":0,"durationMS":647731},"medianData":{"letters":{"23":2,"24":1,"37":1,"38":1,"39":1},"words":{"5":3,"7":1,"8":2},"rejectedWords":{"2":3,"5":1,"8":1,"9":1}},"letters":{"keyboardUsed":67,"correct":89,"position":7,"incorrect":88,"typedKnownIncorrect":6},"firstWord":{"letters":30},"secondWord":{"letters":31},"lastGame":{"word":"visit","letters":5,"words":5,"rejectedWords":2,"durationMS":45502}}',
diffle_stats_cs_daily_special_long: '{"meta":["diffle_stats_cs_daily_special_long"],"totals":{"won":2,"lost":0,"letters":120,"words":23,"rejectedWords":61,"keyboardUsagePercentage":0,"durationMS":870779},"medianData":{"letters":{"42":1,"78":1},"words":{"8":1,"15":1},"rejectedWords":{"27":1,"34":1}},"letters":{"keyboardUsed":63,"correct":59,"position":5,"incorrect":56,"typedKnownIncorrect":18},"firstWord":{"letters":7},"secondWord":{"letters":9},"lastGame":{"word":"politický","letters":9,"words":8,"rejectedWords":34,"durationMS":332831}}',
diffle_stats_fr_daily_special_long: '{"meta":["diffle_stats_fr_daily_special_long"],"totals":{"won":1,"lost":0,"letters":11,"words":2,"rejectedWords":0,"keyboardUsagePercentage":0,"durationMS":35845},"medianData":{"letters":{"11":1},"words":{"2":1},"rejectedWords":{"0":1}},"letters":{"keyboardUsed":24,"correct":7,"position":0,"incorrect":4,"typedKnownIncorrect":0},"firstWord":{"letters":4},"secondWord":{"letters":7},"lastGame":{"word":"séneçon","letters":7,"words":2,"rejectedWords":0,"durationMS":35845}}',
diffle_fi_daily_stamp: '29.07.2024',
diffle_stats_en_daily_no_special_short: '{"meta":["diffle_stats_en_daily_no_special_short"],"totals":{"won":57,"lost":0,"letters":1615,"words":333,"rejectedWords":471,"keyboardUsagePercentage":0,"durationMS":6844266},"medianData":{"letters":{"14":2,"18":2,"19":1,"20":4,"21":3,"22":1,"23":2,"24":2,"25":5,"26":3,"27":3,"28":6,"29":4,"31":2,"32":2,"33":1,"34":2,"35":1,"36":3,"38":2,"40":3,"41":1,"49":2},"words":{"3":2,"4":11,"5":15,"6":12,"7":6,"8":7,"9":2,"10":2},"rejectedWords":{"0":11,"1":12,"2":2,"3":8,"4":1,"6":2,"7":1,"10":2,"12":3,"13":1,"14":3,"15":1,"16":1,"17":1,"19":1,"20":1,"21":1,"23":1,"29":1,"35":1,"50":1,"52":1}},"letters":{"keyboardUsed":61,"correct":887,"position":73,"incorrect":655,"typedKnownIncorrect":8},"firstWord":{"letters":285},"secondWord":{"letters":277},"lastGame":{"word":"unfair","letters":6,"words":4,"rejectedWords":0,"durationMS":38330}}',
diffle_pl_mode_daily: '{"status":"guessing","wordToGuess":"obiektowy","guessesWords":[],"rejectedWords":[],"lastUpdateTime":0,"durationMS":0}',
diffle_fi_last_game_mode: 'daily',
diffle_should_vibrate_keyboard: 'true',
diffle_es_daily_stamp: '13.05.2024',
diffle_streak_fr_daily: '{"wonStreak":2,"lostStreak":0,"bestStreak":2,"worstStreak":0}',
diffle_it_last_game_mode: 'daily',
diffle_max_daily_stamp: '29.07.2024',
diffle_should_share_words: 'true',
diffle_cs_keyboard_layout: '1',
diffle_de_last_game_mode: 'daily',
diffle_last_game_mode: 'daily',
diffle_stats_cs_daily_no_special_short: '{"meta":["diffle_stats_cs_daily_no_special_short"],"totals":{"won":2,"lost":0,"letters":62,"words":14,"rejectedWords":22,"keyboardUsagePercentage":0,"durationMS":222512},"medianData":{"letters":{"30":1,"32":1},"words":{"7":2},"rejectedWords":{"8":1,"14":1}},"letters":{"keyboardUsed":43,"correct":36,"position":0,"incorrect":26,"typedKnownIncorrect":0},"firstWord":{"letters":8},"secondWord":{"letters":7},"lastGame":{"word":"karel","letters":5,"words":7,"rejectedWords":14,"durationMS":107249}}',
diffle_cs_daily_stamp: '29.07.2024',
diffle_fr_mode_daily: '{"status":"guessing","wordToGuess":"sciemment","guessesWords":[],"rejectedWords":[],"lastUpdateTime":0,"durationMS":0}',
diffle_streak_en_practice: '{"wonStreak":7,"lostStreak":0,"bestStreak":7,"worstStreak":1}',
diffle_fi_mode_daily: '{"status":"guessing","wordToGuess":"onnistua","guessesWords":[],"rejectedWords":[],"lastUpdateTime":0,"durationMS":0}',
diffle_fr_mode_practice: '{"status":"guessing","wordToGuess":"sente","guessesWords":[],"rejectedWords":[],"lastUpdateTime":0,"durationMS":0}',
diffle_fr_keyboard_layout: '0',
diffle_streak_en_daily: '{"wonStreak":107,"lostStreak":0,"bestStreak":107,"worstStreak":0}',
diffle_streak_cs_practice: '{"wonStreak":0,"lostStreak":1,"bestStreak":1,"worstStreak":1}',
diffle_stats_en_daily_no_special_long: '{"meta":["diffle_stats_en_daily_no_special_long"],"totals":{"won":50,"lost":0,"letters":1870,"words":345,"rejectedWords":744,"keyboardUsagePercentage":0,"durationMS":11897858},"medianData":{"letters":{"17":1,"19":1,"21":2,"22":2,"23":1,"24":1,"25":1,"26":1,"27":2,"28":1,"29":2,"31":1,"32":1,"33":1,"34":1,"35":1,"36":5,"37":2,"38":1,"39":1,"40":1,"41":2,"42":3,"44":2,"45":2,"46":2,"48":1,"50":1,"55":3,"57":2,"58":1,"61":1},"words":{"3":3,"4":6,"5":6,"6":8,"7":7,"8":6,"9":7,"10":4,"11":2,"12":1},"rejectedWords":{"0":2,"1":3,"2":1,"3":3,"4":2,"5":2,"6":3,"7":3,"8":1,"9":1,"11":3,"12":2,"13":6,"14":1,"15":2,"17":1,"18":2,"19":2,"22":1,"24":1,"25":1,"26":1,"31":1,"34":1,"44":1,"58":1,"61":2}},"letters":{"keyboardUsed":64,"correct":1170,"position":105,"incorrect":595,"typedKnownIncorrect":30},"firstWord":{"letters":250},"secondWord":{"letters":239},"lastGame":{"word":"nonsense","letters":8,"words":5,"rejectedWords":0,"durationMS":67467}}',
diffle_stats_pl_daily_no_special_short: '{"meta":["diffle_stats_pl_daily_no_special_short"],"totals":{"won":38,"lost":0,"letters":976,"words":184,"rejectedWords":138,"keyboardUsagePercentage":0,"durationMS":4577445},"medianData":{"letters":{"12":1,"15":1,"16":2,"17":1,"18":3,"19":1,"20":1,"21":2,"22":4,"23":1,"24":3,"25":5,"26":2,"27":2,"31":1,"34":1,"35":1,"38":2,"41":1,"42":1,"44":1,"48":1},"words":{"2":1,"3":7,"4":12,"5":9,"6":1,"7":4,"8":2,"9":2},"rejectedWords":{"0":16,"1":8,"2":3,"3":3,"4":1,"5":1,"7":1,"8":2,"24":1,"28":1,"31":1}},"letters":{"keyboardUsed":41,"correct":531,"position":55,"incorrect":390,"typedKnownIncorrect":7},"firstWord":{"letters":226},"secondWord":{"letters":196},"lastGame":{"word":"enigma","letters":6,"words":2,"rejectedWords":0,"durationMS":16780}}',
diffle_pl_daily_stamp: '29.07.2024',
diffle_de_daily_stamp: '28.07.2024',
diffle_streak_pl_all: '{"wonStreak":129,"lostStreak":0,"bestStreak":129,"worstStreak":0}',
diffle_en_last_game_mode: 'daily',
diffle_theme: 'light',
diffle_stats_pl_practice_special_long: '{"meta":["diffle_stats_pl_practice_special_long"],"totals":{"won":4,"lost":0,"letters":147,"words":23,"rejectedWords":8,"keyboardUsagePercentage":0,"durationMS":421508},"medianData":{"letters":{"27":1,"33":1,"39":1,"48":1},"words":{"4":1,"5":1,"7":2},"rejectedWords":{"0":2,"1":1,"7":1}},"letters":{"keyboardUsed":50,"correct":97,"position":6,"incorrect":44,"typedKnownIncorrect":0},"firstWord":{"letters":21},"secondWord":{"letters":25},"lastGame":{"word":"drukować","letters":8,"words":7,"rejectedWords":1,"durationMS":87865}}',
diffle_streak_cs_all: '{"wonStreak":3,"lostStreak":0,"bestStreak":3,"worstStreak":1}',
diffle_es_last_game_mode: 'daily',
diffle_stats_pl_practice_special_short: '{"meta":["diffle_stats_pl_practice_special_short"],"totals":{"won":2,"lost":0,"letters":55,"words":11,"rejectedWords":9,"keyboardUsagePercentage":0,"durationMS":262148},"medianData":{"letters":{"20":1,"35":1},"words":{"4":1,"7":1},"rejectedWords":{"0":1,"9":1}},"letters":{"keyboardUsed":55,"correct":22,"position":4,"incorrect":29,"typedKnownIncorrect":1},"firstWord":{"letters":11},"secondWord":{"letters":9},"lastGame":{"word":"cegła","letters":5,"words":4,"rejectedWords":0,"durationMS":54872}}',
diffle_theme_contrast: 'false',
diffle_stats_fr_daily_no_special_long: '{"meta":["diffle_stats_fr_daily_no_special_long"],"totals":{"won":1,"lost":0,"letters":12,"words":2,"rejectedWords":2,"keyboardUsagePercentage":0,"durationMS":2898},"medianData":{"letters":{"12":1},"words":{"2":1},"rejectedWords":{"2":1}},"letters":{"keyboardUsed":23,"correct":8,"position":0,"incorrect":4,"typedKnownIncorrect":0},"firstWord":{"letters":5},"secondWord":{"letters":7},"lastGame":{"word":"coriace","letters":7,"words":2,"rejectedWords":2,"durationMS":2898}}',
diffle_pl_last_game_mode: 'daily',
diffle_cs_mode_practice: '{"status":"lost","wordToGuess":"rovnice","guessesWords":["hra","roky","mne","ronde","skupina","funguji","lot"],"rejectedWords":["hram","hrat","rovne","ropne","rolin","roslin","rogi","rogovy","silno","silne","podli","rovenee","rouvene","thedy","wasze","rolne","rolpne","plne","uplny","upln","uplne","uplni","uplno","roine","roinde","roinfe","roince","roinbe","roinle","rointe","roinwe","roinze","roinje","roinie","roinoe","roinre","cvartek","cvrte","cvrtek","cvřtek","čvarte","čvartek","oblok","oblo","tol","kbin","borein","rein","cerin","binore"],"lastUpdateTime":1707424575660,"durationMS":311246}',
diffle_cs_last_game_mode: 'daily',
diffle_streak_fr_all: '{"wonStreak":2,"lostStreak":0,"bestStreak":2,"worstStreak":0}',
diffle_qwerty_mode: 'language',
diffle_fr_last_game_mode: 'daily',
diffle_stats_pl_practice_no_special_long: '{"meta":["diffle_stats_pl_practice_no_special_long"],"totals":{"won":5,"lost":0,"letters":183,"words":28,"rejectedWords":36,"keyboardUsagePercentage":0,"durationMS":621755},"medianData":{"letters":{"18":1,"24":1,"41":1,"42":1,"58":1},"words":{"3":1,"4":1,"6":2,"9":1},"rejectedWords":{"0":2,"1":1,"13":1,"22":1}},"letters":{"keyboardUsed":45,"correct":116,"position":12,"incorrect":55,"typedKnownIncorrect":7},"firstWord":{"letters":30},"secondWord":{"letters":32},"lastGame":{"word":"rusofobia","letters":9,"words":6,"rejectedWords":22,"durationMS":188357}}',
diffle_is_small_keyboard: 'false',
diffle_streak_en_all: '{"wonStreak":110,"lostStreak":0,"bestStreak":110,"worstStreak":1}',
diffle_should_vibrate: 'true',
diffle_streak_cs_daily: '{"wonStreak":4,"lostStreak":0,"bestStreak":4,"worstStreak":0}',
diffle_stats_pl_daily_special_long: '{"meta":["diffle_stats_pl_daily_special_long"],"totals":{"won":31,"lost":0,"letters":1071,"words":172,"rejectedWords":140,"keyboardUsagePercentage":0,"durationMS":8322719},"medianData":{"letters":{"17":1,"21":1,"22":2,"24":1,"26":2,"27":1,"28":3,"32":1,"33":2,"34":3,"35":1,"36":1,"37":2,"39":1,"42":1,"43":3,"45":1,"46":1,"47":1,"53":1,"56":1},"words":{"3":2,"4":5,"5":12,"6":5,"7":2,"8":4,"10":1},"rejectedWords":{"0":6,"1":6,"2":2,"3":4,"4":2,"5":2,"6":3,"11":1,"12":3,"15":1,"20":1}},"letters":{"keyboardUsed":47,"correct":696,"position":40,"incorrect":335,"typedKnownIncorrect":1},"firstWord":{"letters":167},"secondWord":{"letters":165},"lastGame":{"word":"doniosły","letters":8,"words":5,"rejectedWords":0,"durationMS":677451}}',
diffle_stats_pl_daily_special_short: '{"meta":["diffle_stats_pl_daily_special_short"],"totals":{"won":11,"lost":0,"letters":242,"words":48,"rejectedWords":5,"keyboardUsagePercentage":0,"durationMS":1329248},"medianData":{"letters":{"14":2,"18":1,"21":2,"24":2,"25":1,"26":1,"27":1,"28":1},"words":{"3":2,"4":4,"5":4,"6":1},"rejectedWords":{"0":8,"1":1,"2":2}},"letters":{"keyboardUsed":41,"correct":127,"position":12,"incorrect":103,"typedKnownIncorrect":0},"firstWord":{"letters":55},"secondWord":{"letters":48},"lastGame":{"word":"wódz","letters":4,"words":3,"rejectedWords":2,"durationMS":134204}}',
diffle_it_daily_stamp: '28.07.2024',
diffle_de_keyboard_layout: '1',
diffle_show_duration: 'false',
diffle_en_daily_stamp: '28.07.2024',
diffle_stats_cs_practice_no_special_long: '{"meta":["diffle_stats_cs_practice_no_special_long"],"totals":{"won":1,"lost":1,"letters":45,"words":9,"rejectedWords":14,"keyboardUsagePercentage":0,"durationMS":127459},"medianData":{"letters":{"45":1},"words":{"9":1},"rejectedWords":{"14":1}},"letters":{"keyboardUsed":49,"correct":25,"position":3,"incorrect":17,"typedKnownIncorrect":4},"firstWord":{"letters":3},"secondWord":{"letters":4},"lastGame":{"word":"rovnice","letters":7,"words":7,"rejectedWords":50,"durationMS":311246}}',
diffle_pl_mode_sandbox_live: '{"status":"guessing","wordToGuess":"biblia","guessesWords":[],"rejectedWords":[],"lastUpdateTime":0,"durationMS":0}',
diffle_cookies: '{"googleAnalytics":false,"diffleExternal":false,"diffleLocal":true}',
diffle_stats_pl_practice_no_special_short: '{"meta":["diffle_stats_pl_practice_no_special_short"],"totals":{"won":4,"lost":0,"letters":144,"words":27,"rejectedWords":11,"keyboardUsagePercentage":0,"durationMS":409997},"medianData":{"letters":{"25":1,"29":1,"43":1,"47":1},"words":{"5":1,"6":1,"8":2},"rejectedWords":{"0":1,"1":1,"5":2}},"letters":{"keyboardUsed":46,"correct":82,"position":5,"incorrect":57,"typedKnownIncorrect":6},"firstWord":{"letters":22},"secondWord":{"letters":18},"lastGame":{"word":"kapa","letters":4,"words":6,"rejectedWords":0,"durationMS":73900}}',
diffle_stats_pl_daily_no_special_long: '{"meta":["diffle_stats_pl_daily_no_special_long"],"totals":{"won":34,"lost":0,"letters":1102,"words":179,"rejectedWords":342,"keyboardUsagePercentage":0,"durationMS":8366097},"medianData":{"letters":{"19":2,"20":1,"21":1,"22":1,"23":1,"24":2,"25":1,"26":1,"27":4,"28":1,"29":2,"31":2,"32":2,"35":1,"36":1,"37":1,"38":2,"40":2,"42":1,"44":1,"50":1,"51":1,"53":1,"55":1},"words":{"3":5,"4":10,"5":6,"6":6,"7":2,"8":2,"9":2,"10":1},"rejectedWords":{"0":11,"1":3,"2":4,"5":2,"10":1,"11":1,"12":1,"13":1,"14":1,"17":3,"18":1,"22":1,"30":1,"36":1,"48":1,"56":1}},"letters":{"keyboardUsed":45,"correct":726,"position":64,"incorrect":312,"typedKnownIncorrect":0},"firstWord":{"letters":202},"secondWord":{"letters":185},"lastGame":{"word":"bzykanie","letters":8,"words":5,"rejectedWords":0,"durationMS":18154}}',
diffle_should_swap_enter: 'false',
diffle_should_confirm_enter: 'false',
diffle_last_lang: 'pl',
diffle_streak_pl_practice: '{"wonStreak":15,"lostStreak":0,"bestStreak":15,"worstStreak":0}',
diffle_daily: '{"wordToGuess":"paprotka","guessesWords":["granie","rosa","wrota","buchy","dotrwa","karton","frotka","paprotka"]}',
diffle_fr_daily_stamp: '29.07.2024',
};
Object.keys(data).forEach((k) => {
localStorage.setItem(k, data[k]);

Check failure on line 76 in src/components/Panes/Summary/copy-data.ts

View workflow job for this annotation

GitHub Actions / Build

Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{ diffle_stats_en_practice_no_special_long: string; diffle_streak_pl_daily: string; diffle_pl_mode_practice: string; diffle_practice: string; diffle_en_mode_practice: string; diffle_daily_stamp: string; ... 65 more ...; diffle_fr_daily_stamp: string; }'.
});
1 change: 1 addition & 0 deletions src/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export enum Pane {
Game = 'game',
Settings = 'settings',
Statistics = 'statistics',
Summary = 'summary',
AboutLanguage = 'about-language',
}

Expand Down
Loading

0 comments on commit 352abb6

Please sign in to comment.