Skip to content

Commit e63e8e3

Browse files
committed
show lang with most tgt available
1 parent 749d376 commit e63e8e3

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

src/components/translator/LanguageSelector.tsx

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -538,6 +538,33 @@ const LanguageSelector = (props: Props): React.ReactElement => {
538538
return () => current.removeEventListener('change', handleMediaChange);
539539
}, []);
540540

541+
const initializedBestSrc = React.useRef(false);
542+
React.useEffect(() => {
543+
if (initializedBestSrc.current) return;
544+
let best = srcLang;
545+
let bestSize = (pairs[srcLang] && pairs[srcLang].size) || 0;
546+
const keys = Object.keys(pairs as Record<string, Set<string>>);
547+
for (let i = 0; i < keys.length; i++) {
548+
const k = keys[i];
549+
const size = (pairs[k] && pairs[k].size) || 0;
550+
if (size > bestSize) {
551+
best = k;
552+
bestSize = size;
553+
}
554+
}
555+
if (best && best !== srcLang) {
556+
setSrcLang(best);
557+
if (!isPair(pairs, best, tgtLang)) {
558+
const it = pairs[best] && (pairs[best] as Set<string>).values();
559+
const first = it ? it.next().value : undefined;
560+
if (first) {
561+
setTgtLang(first);
562+
}
563+
}
564+
}
565+
initializedBestSrc.current = true;
566+
}, [pairs]);
567+
541568
const SelectorComponent = showMobile ? MobileLanguageSelector : DesktopLanguageSelector;
542569

543570
return (

0 commit comments

Comments
 (0)