feat: add native notification
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user