Files
modrinth/apps/app-frontend/src/composables/use-app-settings.ts
T
Truman Gao a85b8eed3f fix: app library post release (#7211)
* fix: fixed height on modal

* fix: conditional auto padding being applied on user avatars

* feat: allow ungrouped to be dragged

* feat: add drag handle to resize num items in jump in

* qa

* feat: add context menu submenus

* feat: hook up icon editing in sub menu

* fix: breadcrumb and sidebar not matching

* fix: bring back signal icon for ping and players online

* feat: add compact mode for library

* smaller checkmark

* pnpm prepr

* feat: bring back loader/game version sort

* add loader symbols

* refactor: compact mode with sync'd app settings

* pnpm prepr

* move loaders up

* qa

* feat: exclude loaders from randomizing
2026-08-20 19:30:42 +00:00

54 lines
1.4 KiB
TypeScript

import { reactive, ref } from 'vue'
export const DEFAULT_FEATURE_FLAGS = {
project_background: false,
page_path: false,
worlds_in_home: true,
server_project_qa: false,
show_version_environment_column: false,
server_ram_as_bytes_always_on: false,
always_show_app_controls: false,
skip_non_essential_warnings: false,
skip_unknown_pack_warning: false,
pride_fundraiser: true,
i18n_debug: false,
show_instance_play_time: true,
compact_instance_cards: false,
advanced_filters_collapsed: true,
always_show_copy_details: false,
hide_installed_modpacks: false,
friends_active_collapsed: false,
friends_online_collapsed: false,
friends_offline_collapsed: true,
friends_pending_collapsed: true,
dismissed_photosensitivity_filter_warning: false,
}
export type FeatureFlag = keyof typeof DEFAULT_FEATURE_FLAGS
type FeatureFlags = Record<FeatureFlag, boolean>
const syncBehaviorAcrossDevices = ref(false)
const featureFlags = reactive<FeatureFlags>({ ...DEFAULT_FEATURE_FLAGS })
function setBehaviorSyncAcrossDevices(enabled: boolean): void {
syncBehaviorAcrossDevices.value = enabled
}
function getFeatureFlag(key: FeatureFlag): boolean {
return featureFlags[key] ?? DEFAULT_FEATURE_FLAGS[key]
}
const appSettings = reactive({
syncBehaviorAcrossDevices,
hideNametagSkinsPage: false,
toggleSidebar: false,
devMode: false,
featureFlags,
setBehaviorSyncAcrossDevices,
getFeatureFlag,
})
export function useAppSettings() {
return appSettings
}