mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-04-25 10:18:31 +02:00
Persist window paths
This commit is contained in:
@@ -3,11 +3,11 @@ import { routePaths, useAppRoutes } from '../hooks/useAppRoutes';
|
|||||||
import { useRecentRequests } from '../hooks/useRecentRequests';
|
import { useRecentRequests } from '../hooks/useRecentRequests';
|
||||||
import { useRequests } from '../hooks/useRequests';
|
import { useRequests } from '../hooks/useRequests';
|
||||||
import { GlobalHooks } from './GlobalHooks';
|
import { GlobalHooks } from './GlobalHooks';
|
||||||
import RouteError from './RouteError';
|
|
||||||
import Workspace from './Workspace';
|
import Workspace from './Workspace';
|
||||||
import Workspaces from './Workspaces';
|
import Workspaces from './Workspaces';
|
||||||
import { DialogProvider } from './DialogContext';
|
import { DialogProvider } from './DialogContext';
|
||||||
import { useRecentEnvironments } from '../hooks/useRecentEnvironments';
|
import { useActiveEnvironmentId } from '../hooks/useActiveEnvironmentId';
|
||||||
|
import RouteError from './RouteError';
|
||||||
|
|
||||||
const router = createBrowserRouter([
|
const router = createBrowserRouter([
|
||||||
{
|
{
|
||||||
@@ -48,7 +48,7 @@ export function AppRouter() {
|
|||||||
|
|
||||||
function WorkspaceOrRedirect() {
|
function WorkspaceOrRedirect() {
|
||||||
const recentRequests = useRecentRequests();
|
const recentRequests = useRecentRequests();
|
||||||
const recentEnvironments = useRecentEnvironments();
|
const activeEnvironmentId = useActiveEnvironmentId();
|
||||||
const requests = useRequests();
|
const requests = useRequests();
|
||||||
const request = requests.find((r) => r.id === recentRequests[0]);
|
const request = requests.find((r) => r.id === recentRequests[0]);
|
||||||
const routes = useAppRoutes();
|
const routes = useAppRoutes();
|
||||||
@@ -57,8 +57,8 @@ function WorkspaceOrRedirect() {
|
|||||||
return <Workspace />;
|
return <Workspace />;
|
||||||
}
|
}
|
||||||
|
|
||||||
const environmentId = recentEnvironments[0];
|
|
||||||
const { id: requestId, workspaceId } = request;
|
const { id: requestId, workspaceId } = request;
|
||||||
|
const environmentId = activeEnvironmentId ?? undefined;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Navigate
|
<Navigate
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { w } from '@tauri-apps/api/clipboard-79413165';
|
|||||||
const openTag = '${[ ';
|
const openTag = '${[ ';
|
||||||
const closeTag = ' ]}';
|
const closeTag = ' ]}';
|
||||||
|
|
||||||
export interface TwigCompletionOption {
|
interface TwigCompletionOption {
|
||||||
name: string;
|
name: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,9 @@ class PlaceholderWidget extends WidgetType {
|
|||||||
}
|
}
|
||||||
toDOM() {
|
toDOM() {
|
||||||
const elt = document.createElement('span');
|
const elt = document.createElement('span');
|
||||||
elt.className = `placeholder-widget ${!this.isExistingVariable ? 'placeholder-widget-error' : ''}`;
|
elt.className = `placeholder-widget ${
|
||||||
|
!this.isExistingVariable ? 'placeholder-widget-error' : ''
|
||||||
|
}`;
|
||||||
elt.textContent = this.name;
|
elt.textContent = this.name;
|
||||||
return elt;
|
return elt;
|
||||||
}
|
}
|
||||||
|
|||||||
21
src-web/lib/initPathnamePersistance.ts
Normal file
21
src-web/lib/initPathnamePersistance.ts
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
import { appWindow } from '@tauri-apps/api/window';
|
||||||
|
import { NAMESPACE_NO_SYNC, getKeyValue, setKeyValue } from './keyValueStore';
|
||||||
|
|
||||||
|
const key = ['window_pathname', appWindow.label];
|
||||||
|
const namespace = NAMESPACE_NO_SYNC;
|
||||||
|
const fallback = undefined;
|
||||||
|
|
||||||
|
export async function initPathnamePersistance() {
|
||||||
|
if (window.location.pathname === '/') {
|
||||||
|
const pathname = await getKeyValue<string | undefined>({ key, namespace, fallback });
|
||||||
|
if (pathname != null) {
|
||||||
|
window.location.replace(pathname);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener('pushstate', async () => {
|
||||||
|
const { pathname: value } = window.location;
|
||||||
|
await setKeyValue<string | undefined>({ key, namespace, value });
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -4,10 +4,17 @@ import { App } from './components/App';
|
|||||||
import { getKeyValue } from './lib/keyValueStore';
|
import { getKeyValue } from './lib/keyValueStore';
|
||||||
import { getPreferredAppearance, setAppearance } from './lib/theme/window';
|
import { getPreferredAppearance, setAppearance } from './lib/theme/window';
|
||||||
import './main.css';
|
import './main.css';
|
||||||
|
import { initPathnamePersistance } from './lib/initPathnamePersistance';
|
||||||
|
|
||||||
setAppearance(await getKeyValue({ key: 'appearance', fallback: getPreferredAppearance() }));
|
await initPathnamePersistance();
|
||||||
|
|
||||||
|
setAppearance(
|
||||||
|
await getKeyValue({
|
||||||
|
key: 'appearance',
|
||||||
|
fallback: getPreferredAppearance(),
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
// root holds our app's root DOM Element:
|
|
||||||
createRoot(document.getElementById('root') as HTMLElement).render(
|
createRoot(document.getElementById('root') as HTMLElement).render(
|
||||||
<StrictMode>
|
<StrictMode>
|
||||||
<App />
|
<App />
|
||||||
|
|||||||
Reference in New Issue
Block a user