Get query-triggered command working in browser too

This commit is contained in:
Frank Noirot
2024-10-10 18:55:31 -04:00
parent 96b06247a4
commit d58a147b7d
12 changed files with 283 additions and 82 deletions

View File

@ -1,7 +1,7 @@
import { base64ToString } from 'lib/base64'
import { CREATE_FILE_URL_PARAM, DEFAULT_FILE_NAME } from 'lib/constants'
import { useEffect } from 'react'
import { useLocation } from 'react-router-dom'
import { useSearchParams } from 'react-router-dom'
import { useCommandsContext } from './useCommandsContext'
import { useSettingsAuthContext } from './useSettingsAuthContext'
import { isDesktop } from 'lib/isDesktop'
@ -16,28 +16,28 @@ import { baseUnitsUnion } from 'lib/settings/settingsTypes'
* URL parameters.
*/
export function useCreateFileLinkQuery() {
const location = useLocation()
const [searchParams] = useSearchParams()
const { commandBarSend } = useCommandsContext()
const { settings } = useSettingsAuthContext()
useEffect(() => {
const urlParams = new URLSearchParams(location.search)
const createFileParam = urlParams.has(CREATE_FILE_URL_PARAM)
const createFileParam = searchParams.has(CREATE_FILE_URL_PARAM)
console.log('checking for createFileParam', {
createFileParam,
urlParams: [...urlParams.entries()],
location,
searchParams: [...searchParams.entries()],
})
if (createFileParam) {
const params: FileLinkParams = {
code: base64ToString(decodeURIComponent(urlParams.get('code') ?? '')),
code: base64ToString(
decodeURIComponent(searchParams.get('code') ?? '')
),
name: urlParams.get('name') ?? DEFAULT_FILE_NAME,
name: searchParams.get('name') ?? DEFAULT_FILE_NAME,
units:
(baseUnitsUnion.find((unit) => urlParams.get('units') === unit) ||
(baseUnitsUnion.find((unit) => searchParams.get('units') === unit) ||
settings.context.modeling.defaultUnit.default) ??
settings.context.modeling.defaultUnit.current,
}
@ -74,5 +74,5 @@ export function useCreateFileLinkQuery() {
},
})
}
}, [location.search])
}, [searchParams])
}

View File

@ -14,7 +14,7 @@ export const useProjectsLoader = (deps?: [number]) => {
useEffect(() => {
// Useless on web, until we get fake filesystems over there.
if (!isDesktop) return
if (!isDesktop()) return
if (deps && deps[0] === lastTs) return