* BROKEN: start of scopes for each setting * Clean up later: mostly-functional scoped settings! Broken command bar, unimplemented generated settings components * Working persisted project settings in-folder * Start working toward automatic commands and settings UI * Relatively stable, settings-menu-editable * Settings persistence tweaks after merge * Custom settings UI working properly, cleaner types * Allow boolean command types, create Settings UI for them * Add support for option and string Settings input types * Proof of concept settings from command bar * Add all settings to command bar * Allow settings to be hidden on a level * Better command titles for settings * Hide the settings the settings from the commands bar * Derive command defaultValue from *current* settingsMachine context * Fix generated settings UI for 'options' type settings * Pretty settings modal 💅 * Allow for rollback to parent level setting * fmt * Fix tsc errors not related to loading from localStorage * Better setting descriptions, better buttons * Make displayName searchable in command bar * Consolidate constants, get working in browser * Start fixing tests, better types for saved settings payloads * Fix playwright tests * Add a test for the settings modal * Add AtLeast to codespell ignore list * Goofed merge of codespellrc * Try fixing linux E2E tests * Make codespellrc word lowercase * fmt * Fix data-testid in Tauri test * Don't set text settings if nothing changed * Turn off unimplemented settings * Allow for multiple "execution-done" messages to have appeared in snapshot tests * Try fixing up snapshot tests * Switch from .json to .toml settings file format * Use a different method for overriding the default units * Try to force using the new common storage state in snapshot tests * Update tests to use TOML * fmt and remove console logs * Restore units to export * tsc errors, make snapshot tests use TOML * Ensure that snapshot tests use the basicStorageState * Re-organize use of test.use() * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) * Update snapshots one more time since lighting changed * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) * Fix broken "Show in folder" for project-level settings * Fire all relevant actions after settings reset * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) * Properly reset the default directory * Hide settings by platform * Actually honor showDebugPanel * Unify settings hiding logic * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) * fix first extrusion snapshot * another attempt to fix extrustion snapshot * Rerun test suite * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) * trigger CI * more extrusion stuff * Replace resetSettings console log with comment --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Kurt Hutten Irev-Dev <k.hutten@protonmail.ch>
53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
import { sep } from '@tauri-apps/api/path'
|
|
import { onboardingPaths } from 'routes/Onboarding/paths'
|
|
import { BROWSER_FILE_NAME, BROWSER_PROJECT_NAME, FILE_EXT } from './constants'
|
|
import { isTauri } from './isTauri'
|
|
|
|
const prependRoutes =
|
|
(routesObject: Record<string, string>) => (prepend: string) => {
|
|
return Object.fromEntries(
|
|
Object.entries(routesObject).map(([constName, path]) => [
|
|
constName,
|
|
prepend + path,
|
|
])
|
|
)
|
|
}
|
|
|
|
export const paths = {
|
|
INDEX: '/',
|
|
HOME: '/home',
|
|
FILE: '/file',
|
|
SETTINGS: '/settings',
|
|
SIGN_IN: '/signin',
|
|
ONBOARDING: prependRoutes(onboardingPaths)(
|
|
'/onboarding'
|
|
) as typeof onboardingPaths,
|
|
} as const
|
|
export const BROWSER_PATH = `%2F${BROWSER_PROJECT_NAME}%2F${BROWSER_FILE_NAME}${FILE_EXT}`
|
|
|
|
export function getProjectMetaByRouteId(id?: string, defaultDir = '') {
|
|
if (!id) return undefined
|
|
const s = isTauri() ? sep : '/'
|
|
|
|
const decodedId = decodeURIComponent(id).replace(/\/$/, '') // remove trailing slash
|
|
const projectAndFile =
|
|
defaultDir === '/'
|
|
? decodedId.replace(defaultDir, '')
|
|
: decodedId.replace(defaultDir + s, '')
|
|
const filePathParts = projectAndFile.split(s)
|
|
const projectName = filePathParts[0]
|
|
const projectPath =
|
|
(defaultDir === '/' ? defaultDir : defaultDir + s) + projectName
|
|
const lastPathPart = filePathParts[filePathParts.length - 1]
|
|
const currentFileName =
|
|
lastPathPart === projectName ? undefined : lastPathPart
|
|
const currentFilePath = lastPathPart === projectName ? undefined : decodedId
|
|
|
|
return {
|
|
projectName,
|
|
projectPath,
|
|
currentFileName,
|
|
currentFilePath,
|
|
}
|
|
}
|