commit dbf96d227ac269e7c4958f1ceae75bd6d6cd2267
parent 63813081fc00aa98de5f2207aa1331e4c4fb8c6a
Author: triesap <137732411+triesap@users.noreply.github.com>
Date: Sat, 26 Oct 2024 21:40:57 +0000
client: add client dialog open photos method. add client fs read binary method, edit imports
Diffstat:
4 files changed, 40 insertions(+), 5 deletions(-)
diff --git a/client/src/dialog/tauri.ts b/client/src/dialog/tauri.ts
@@ -1,5 +1,5 @@
-import { confirm, type ConfirmDialogOptions, message } from '@tauri-apps/plugin-dialog';
-import type { IClientDialog, IClientDialogConfirmOpts, IClientDialogKind } from "./types";
+import { confirm, type ConfirmDialogOptions, message, open, type OpenDialogOptions } from '@tauri-apps/plugin-dialog';
+import type { IClientDialog, IClientDialogConfirmOpts, IClientDialogKind, IClientDialogResolve } from "./types";
export class TauriClientDialog implements IClientDialog {
public async alert(msg: string, title?: string, kind?: IClientDialogKind): Promise<boolean> {
@@ -27,4 +27,23 @@ export class TauriClientDialog implements IClientDialog {
return false;
};
}
+
+ public async open_photos(): Promise<IClientDialogResolve | undefined> {
+ try {
+ const options: OpenDialogOptions = {
+ multiple: true,
+ directory: false,
+ filters: [{
+ name: `Image`,
+ extensions: ['png']
+ }]
+ };
+ const res = await open(options) as any;
+ if (Array.isArray(res)) return { results: res.map(i => String(i)) };
+ else if (typeof res === `string`) return { results: [res] };
+ return undefined;
+ } catch (e) {
+ return undefined;
+ };
+ }
}
diff --git a/client/src/dialog/types.ts b/client/src/dialog/types.ts
@@ -1,3 +1,5 @@
+import type { ResultsList } from "@radroots/utils";
+
export type IClientDialogPrompt = {
title?: string;
message: string;
@@ -11,8 +13,11 @@ export type IClientDialogKind = "info" | "warning" | "error";
export type IClientDialogConfirmOpts = string | { title?: string, kind?: IClientDialogKind; message: string; cancel_label?: string; ok_label?: string; };
+export type IClientDialogResolve = ResultsList<string>;
+
export type IClientDialog = {
alert(message: string): Promise<boolean>;
confirm(opts: IClientDialogConfirmOpts): Promise<boolean>;
+ open_photos(): Promise<IClientDialogResolve | undefined>;
//prompt(opts: IClientDialogPrompt): Promise<string | false>;
};
\ No newline at end of file
diff --git a/client/src/fs/tauri.ts b/client/src/fs/tauri.ts
@@ -1,10 +1,10 @@
-import { BaseDirectory, exists as fs_exists, open as fs_open } from '@tauri-apps/plugin-fs';
+import { BaseDirectory, exists, open, readFile } from '@tauri-apps/plugin-fs';
import type { IClientFs, IClientFsOpenResult } from "./types";
export class TauriClientFs implements IClientFs {
public async exists(path: string): Promise<boolean> {
try {
- const res = await fs_exists(path, { baseDir: BaseDirectory.AppData });
+ const res = await exists(path, { baseDir: BaseDirectory.AppData });
return res;
} catch (e) {
console.log(`e exists`, e)
@@ -14,11 +14,21 @@ export class TauriClientFs implements IClientFs {
public async open(path: string): Promise<IClientFsOpenResult | undefined> {
try {
- const res = await fs_open(path, { read: true, baseDir: BaseDirectory.AppData });
+ const res = await open(path, { read: true, baseDir: BaseDirectory.AppData });
return res;
} catch (e) {
console.log(`e open`, e)
return undefined;
};
}
+
+ public async read_bin(path: string): Promise<Uint8Array | undefined> {
+ try {
+ const res = await readFile(path, { baseDir: BaseDirectory.AppData });
+ return res;
+ } catch (e) {
+ console.log(`e read_bin`, e)
+ return undefined;
+ };
+ }
}
diff --git a/client/src/fs/types.ts b/client/src/fs/types.ts
@@ -5,4 +5,5 @@ export type IClientFsOpenResult = FileHandle;
export type IClientFs = {
exists(path: string): Promise<boolean>;
open(path: string): Promise<IClientFsOpenResult | undefined>;
+ read_bin(path: string): Promise<Uint8Array | undefined>;
};
\ No newline at end of file