feat: add native notification

This commit is contained in:
reya
2024-08-08 09:55:50 +07:00
parent c2ebf8e22c
commit f3f806e3cf
10 changed files with 198 additions and 27 deletions

View File

@@ -1,5 +1,10 @@
import { ask, message, open } from "@tauri-apps/plugin-dialog";
import { readFile } from "@tauri-apps/plugin-fs";
import {
isPermissionGranted,
requestPermission,
sendNotification,
} from "@tauri-apps/plugin-notification";
import { relaunch } from "@tauri-apps/plugin-process";
import { check } from "@tauri-apps/plugin-updater";
import { type ClassValue, clsx } from "clsx";
@@ -87,14 +92,12 @@ export function groupEventByDate(events: NostrEvent[]) {
return groups;
}
/*
export function isEmojiOnly(str: string) {
const stringToTest = str.replace(/ /g, "");
const emojiRegex =
/^(?:(?:\p{RI}\p{RI}|\p{Emoji}(?:\p{Emoji_Modifier}|\u{FE0F}\u{20E3}?|[\u{E0020}-\u{E007E}]+\u{E007F})?(?:\u{200D}\p{Emoji}(?:\p{Emoji_Modifier}|\u{FE0F}\u{20E3}?|[\u{E0020}-\u{E007E}]+\u{E007F})?)*)|[\u{1f900}-\u{1f9ff}\u{2600}-\u{26ff}\u{2700}-\u{27bf}])+$/u;
return emojiRegex.test(stringToTest) && Number.isNaN(Number(stringToTest));
export async function checkPermission() {
if (!(await isPermissionGranted())) {
return (await requestPermission()) === "granted";
}
return true;
}
*/
export async function checkForAppUpdates(silent: boolean) {
try {

View File

@@ -16,7 +16,7 @@ import { useQuery } from "@tanstack/react-query";
import { Link, Outlet, createLazyFileRoute } from "@tanstack/react-router";
import { listen } from "@tauri-apps/api/event";
import { Menu, MenuItem, PredefinedMenuItem } from "@tauri-apps/api/menu";
import { readText } from "@tauri-apps/plugin-clipboard-manager";
import { readText, writeText } from "@tauri-apps/plugin-clipboard-manager";
import { message } from "@tauri-apps/plugin-dialog";
import { open } from "@tauri-apps/plugin-shell";
import { type NostrEvent, nip19 } from "nostr-tools";
@@ -460,12 +460,11 @@ function CurrentUser() {
const menuItems = await Promise.all([
MenuItem.new({
text: "Contacts",
action: () =>
navigate({
to: "/$account/contacts",
params: { account: params.account },
}),
text: "Copy Public Key",
action: async () => {
const npub = nip19.npubEncode(params.account);
await writeText(npub);
},
}),
MenuItem.new({
text: "Settings",

View File

@@ -1,5 +1,5 @@
import { commands } from "@/commands";
import { checkForAppUpdates } from "@/commons";
import { checkForAppUpdates, checkPermission } from "@/commons";
import { createFileRoute, redirect } from "@tanstack/react-router";
export const Route = createFileRoute("/")({
@@ -8,6 +8,10 @@ export const Route = createFileRoute("/")({
// TODO: move this function to rust
await checkForAppUpdates(true);
// Request notification permission
await checkPermission();
// Get all accounts from system
const accounts = await commands.getAccounts();
if (!accounts.length) {