mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-04-20 15:51:23 +02:00
Try sandboxing again
This commit is contained in:
8
.github/workflows/artifacts.yml
vendored
8
.github/workflows/artifacts.yml
vendored
@@ -13,10 +13,10 @@ jobs:
|
|||||||
include:
|
include:
|
||||||
- os: macos-12
|
- os: macos-12
|
||||||
target: aarch64-apple-darwin
|
target: aarch64-apple-darwin
|
||||||
- os: macos-latest
|
# - os: macos-latest
|
||||||
target: x86_64-apple-darwin
|
# target: x86_64-apple-darwin
|
||||||
- os: windows-2022
|
# - os: windows-2022
|
||||||
target: x86_64-pc-windows-msvc
|
# target: x86_64-pc-windows-msvc
|
||||||
# # Re-enable Linux when context menu is supported
|
# # Re-enable Linux when context menu is supported
|
||||||
# - os: ubuntu-20.04
|
# - os: ubuntu-20.04
|
||||||
# target: x86_64-unknown-linux-gnu
|
# target: x86_64-unknown-linux-gnu
|
||||||
|
|||||||
9
package-lock.json
generated
9
package-lock.json
generated
@@ -41,6 +41,7 @@
|
|||||||
"react-helmet-async": "^1.3.0",
|
"react-helmet-async": "^1.3.0",
|
||||||
"react-router-dom": "^6.8.1",
|
"react-router-dom": "^6.8.1",
|
||||||
"react-use": "^17.4.0",
|
"react-use": "^17.4.0",
|
||||||
|
"slugify": "^1.6.6",
|
||||||
"tauri-plugin-context-menu": "^0.5.0",
|
"tauri-plugin-context-menu": "^0.5.0",
|
||||||
"tauri-plugin-log-api": "github:tauri-apps/tauri-plugin-log#v1",
|
"tauri-plugin-log-api": "github:tauri-apps/tauri-plugin-log#v1",
|
||||||
"uuid": "^9.0.0"
|
"uuid": "^9.0.0"
|
||||||
@@ -7312,6 +7313,14 @@
|
|||||||
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/slugify": {
|
||||||
|
"version": "1.6.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz",
|
||||||
|
"integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/source-map": {
|
"node_modules/source-map": {
|
||||||
"version": "0.6.1",
|
"version": "0.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||||
|
|||||||
@@ -56,6 +56,7 @@
|
|||||||
"react-helmet-async": "^1.3.0",
|
"react-helmet-async": "^1.3.0",
|
||||||
"react-router-dom": "^6.8.1",
|
"react-router-dom": "^6.8.1",
|
||||||
"react-use": "^17.4.0",
|
"react-use": "^17.4.0",
|
||||||
|
"slugify": "^1.6.6",
|
||||||
"tauri-plugin-context-menu": "^0.5.0",
|
"tauri-plugin-context-menu": "^0.5.0",
|
||||||
"tauri-plugin-log-api": "github:tauri-apps/tauri-plugin-log#v1",
|
"tauri-plugin-log-api": "github:tauri-apps/tauri-plugin-log#v1",
|
||||||
"uuid": "^9.0.0"
|
"uuid": "^9.0.0"
|
||||||
|
|||||||
@@ -2,6 +2,10 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>com.apple.security.app-sandbox</key>
|
||||||
|
<true/>
|
||||||
|
|
||||||
|
<key>com.apple.security.files.user-selected.read-write</key>
|
||||||
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
@@ -666,6 +666,8 @@ fn main() {
|
|||||||
|
|
||||||
create_dir_all(dir.clone()).expect("Problem creating App directory!");
|
create_dir_all(dir.clone()).expect("Problem creating App directory!");
|
||||||
let p = dir.join("db.sqlite");
|
let p = dir.join("db.sqlite");
|
||||||
|
File::options().write(true).create(true).open(&p).expect("Problem creating database file!");
|
||||||
|
|
||||||
let p_string = p.to_string_lossy().replace(' ', "%20");
|
let p_string = p.to_string_lossy().replace(' ', "%20");
|
||||||
let url = format!("sqlite://{}?mode=rwc", p_string);
|
let url = format!("sqlite://{}?mode=rwc", p_string);
|
||||||
println!("Connecting to database at {}", url);
|
println!("Connecting to database at {}", url);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
},
|
},
|
||||||
"package": {
|
"package": {
|
||||||
"productName": "Yaak",
|
"productName": "Yaak",
|
||||||
"version": "2023.3.0"
|
"version": "2023.4.0-beta.1"
|
||||||
},
|
},
|
||||||
"tauri": {
|
"tauri": {
|
||||||
"windows": [],
|
"windows": [],
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
"icons/release/icon.icns",
|
"icons/release/icon.icns",
|
||||||
"icons/release/icon.ico"
|
"icons/release/icon.ico"
|
||||||
],
|
],
|
||||||
"identifier": "co.schier.yaak",
|
"identifier": "app.yaak.desktop",
|
||||||
"longDescription": "The best cross-platform visual API client",
|
"longDescription": "The best cross-platform visual API client",
|
||||||
"resources": [
|
"resources": [
|
||||||
"migrations/*",
|
"migrations/*",
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import React, { memo } from 'react';
|
import React, { memo } from 'react';
|
||||||
import { useActiveRequest } from '../hooks/useActiveRequest';
|
import { useActiveRequest } from '../hooks/useActiveRequest';
|
||||||
import { useActiveWorkspace } from '../hooks/useActiveWorkspace';
|
|
||||||
import { Icon } from './core/Icon';
|
import { Icon } from './core/Icon';
|
||||||
import { IconButton } from './core/IconButton';
|
import { IconButton } from './core/IconButton';
|
||||||
import { HStack } from './core/Stacks';
|
import { HStack } from './core/Stacks';
|
||||||
@@ -17,7 +16,6 @@ interface Props {
|
|||||||
|
|
||||||
export const WorkspaceHeader = memo(function WorkspaceHeader({ className }: Props) {
|
export const WorkspaceHeader = memo(function WorkspaceHeader({ className }: Props) {
|
||||||
const activeRequest = useActiveRequest();
|
const activeRequest = useActiveRequest();
|
||||||
const activeWorkspace = useActiveWorkspace();
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<HStack
|
<HStack
|
||||||
@@ -29,13 +27,7 @@ export const WorkspaceHeader = memo(function WorkspaceHeader({ className }: Prop
|
|||||||
<HStack space={0.5} className="flex-1 pointer-events-none" alignItems="center">
|
<HStack space={0.5} className="flex-1 pointer-events-none" alignItems="center">
|
||||||
<SidebarActions />
|
<SidebarActions />
|
||||||
<HStack alignItems="center">
|
<HStack alignItems="center">
|
||||||
<WorkspaceActionsDropdown
|
<WorkspaceActionsDropdown />
|
||||||
leftSlot={
|
|
||||||
<div className="w-4 h-4 leading-4 rounded text-[0.8em] bg-[#1B88DE] bg-opacity-80 text-white mr-1">
|
|
||||||
{activeWorkspace?.name[0]?.toUpperCase()}
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
<Icon icon="chevronRight" className="text-gray-900 text-opacity-disabled" />
|
<Icon icon="chevronRight" className="text-gray-900 text-opacity-disabled" />
|
||||||
<EnvironmentActionsDropdown className="w-auto pointer-events-auto" />
|
<EnvironmentActionsDropdown className="w-auto pointer-events-auto" />
|
||||||
</HStack>
|
</HStack>
|
||||||
|
|||||||
@@ -1,17 +1,12 @@
|
|||||||
import { useMutation } from '@tanstack/react-query';
|
import { useMutation } from '@tanstack/react-query';
|
||||||
import { invoke } from '@tauri-apps/api';
|
import { invoke } from '@tauri-apps/api';
|
||||||
import type { SaveDialogOptions } from '@tauri-apps/api/dialog';
|
|
||||||
import { save } from '@tauri-apps/api/dialog';
|
import { save } from '@tauri-apps/api/dialog';
|
||||||
import { useActiveWorkspaceId } from './useActiveWorkspaceId';
|
import slugify from 'slugify';
|
||||||
|
import { useActiveWorkspace } from './useActiveWorkspace';
|
||||||
import { useAlert } from './useAlert';
|
import { useAlert } from './useAlert';
|
||||||
|
|
||||||
const saveArgs: SaveDialogOptions = {
|
|
||||||
title: 'Export Data',
|
|
||||||
defaultPath: 'yaak-export.json',
|
|
||||||
};
|
|
||||||
|
|
||||||
export function useExportData() {
|
export function useExportData() {
|
||||||
const workspaceId = useActiveWorkspaceId();
|
const workspace = useActiveWorkspace();
|
||||||
const alert = useAlert();
|
const alert = useAlert();
|
||||||
|
|
||||||
return useMutation({
|
return useMutation({
|
||||||
@@ -19,12 +14,18 @@ export function useExportData() {
|
|||||||
alert({ title: 'Export Failed', body: err });
|
alert({ title: 'Export Failed', body: err });
|
||||||
},
|
},
|
||||||
mutationFn: async () => {
|
mutationFn: async () => {
|
||||||
const exportPath = await save(saveArgs);
|
if (workspace == null) return;
|
||||||
|
|
||||||
|
const workspaceSlug = slugify(workspace.name, { lower: true });
|
||||||
|
const exportPath = await save({
|
||||||
|
title: 'Export Data',
|
||||||
|
defaultPath: `yaak.${workspaceSlug}.json`,
|
||||||
|
});
|
||||||
if (exportPath == null) {
|
if (exportPath == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await invoke('export_data', { workspaceId, exportPath });
|
await invoke('export_data', { workspaceId: workspace.id, exportPath });
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user