テーマ選択から重複要素を排除するように (#8385)
This commit is contained in:
		
							parent
							
								
									9b8dc4c417
								
							
						
					
					
						commit
						a07037affc
					
				
					 2 changed files with 13 additions and 2 deletions
				
			
		|  | @ -101,7 +101,7 @@ import { ColdDeviceStorage } from '@/store'; | |||
| import { i18n } from '@/i18n'; | ||||
| import { defaultStore } from '@/store'; | ||||
| import { instance } from '@/instance'; | ||||
| import { concat } from '@/scripts/array'; | ||||
| import { concat, uniqueBy } from '@/scripts/array'; | ||||
| import { fetchThemes, getThemes } from '@/theme-store'; | ||||
| import * as symbols from '@/symbols'; | ||||
| 
 | ||||
|  | @ -128,7 +128,7 @@ export default defineComponent({ | |||
| 		const instanceThemes = []; | ||||
| 		if (instance.defaultLightTheme != null) instanceThemes.push(JSON5.parse(instance.defaultLightTheme)); | ||||
| 		if (instance.defaultDarkTheme != null) instanceThemes.push(JSON5.parse(instance.defaultDarkTheme)); | ||||
| 		const themes = computed(() => instanceThemes.concat(builtinThemes.concat(installedThemes.value))); | ||||
| 		const themes = computed(() => uniqueBy(instanceThemes.concat(builtinThemes.concat(installedThemes.value)), theme => theme.id)); | ||||
| 		const darkThemes = computed(() => themes.value.filter(t => t.base === 'dark' || t.kind === 'dark')); | ||||
| 		const lightThemes = computed(() => themes.value.filter(t => t.base === 'light' || t.kind === 'light')); | ||||
| 		const darkTheme = ColdDeviceStorage.ref('darkTheme'); | ||||
|  |  | |||
|  | @ -52,6 +52,17 @@ export function unique<T>(xs: T[]): T[] { | |||
| 	return [...new Set(xs)]; | ||||
| } | ||||
| 
 | ||||
| export function uniqueBy<TValue, TKey>(values: TValue[], keySelector: (value: TValue) => TKey): TValue[] { | ||||
| 	const map = new Map<TKey, TValue>(); | ||||
| 
 | ||||
| 	for (const value of values) { | ||||
| 		const key = keySelector(value); | ||||
| 		if (!map.has(key)) map.set(key, value); | ||||
| 	} | ||||
| 
 | ||||
| 	return [...map.values()]; | ||||
| } | ||||
| 
 | ||||
| export function sum(xs: number[]): number { | ||||
| 	return xs.reduce((a, b) => a + b, 0); | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue