From 39cc7fe333ef4b8dd8ba67f5547d56b5ed9f8e5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kadir=20Yaz=C4=B1c=C4=B1?= <47540799+kadiryazici@users.noreply.github.com> Date: Wed, 15 Jul 2026 02:48:09 +0300 Subject: [PATCH 1/6] Use native polling --- .github/workflows/release.yml | 2 +- src-tauri/Cargo.lock | 1 + src-tauri/Cargo.toml | 1 + src-tauri/src/main.rs | 15 ++++++++++++++ src-tauri/tauri.conf.json | 3 ++- src/App.vue | 33 ++++++++++++++----------------- src/composables/usePollTick.ts | 24 ++++++++++++++++++++++ src/gitification/actions/index.ts | 13 ++++++++++-- src/gitification/storage/index.ts | 13 +++++++++++- src/gitification/storage/types.ts | 1 + src/views/SettingsView.vue | 7 +++++++ 11 files changed, 90 insertions(+), 23 deletions(-) create mode 100644 src/composables/usePollTick.ts diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fd8d435..8716ad8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -29,7 +29,7 @@ jobs: if: matrix.platform == 'ubuntu-24.04' run: | sudo apt-get update - sudo apt-get install -y libasound2-dev libudev-dev pkg-config libwebkit2gtk-4.0-dev build-essential libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev patchelf + sudo apt-get install -y libasound2-dev libudev-dev pkg-config libwebkit2gtk-4.1-dev build-essential libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev patchelf - name: install pnpm run: npm install -g pnpm - name: install frontend dependencies diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 9abc1d6..e9db03e 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -1622,6 +1622,7 @@ dependencies = [ "tauri-plugin-single-instance", "tauri-plugin-store", "tauri-plugin-updater", + "tokio", ] [[package]] diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index d34f24f..1b15a46 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -16,6 +16,7 @@ tauri-build = { version = "2", features = [] } [dependencies] serde_json = "1.0" serde = { version = "1.0", features = [ "derive" ] } +tokio = { version = "1", features = ["time"] } tauri = { version = "2", features = ["macos-private-api", "tray-icon", "image-png", "image-ico"] } rodio = "0.20.1" tauri-plugin-store = ">=2.1.0, <3" diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 60a8f49..1ccae79 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -8,6 +8,7 @@ mod commands; use commands::{ go_to_notification_settings, play_notification_sound, set_icon_template, }; +use std::time::Duration; use tauri::{ tray::{MouseButton, MouseButtonState, TrayIconEvent}, App, Emitter, Manager, PhysicalPosition, WindowEvent, @@ -18,6 +19,20 @@ fn handle_setup(app: &mut App) -> Result<(), Box> { let window = app.get_webview_window("main").expect("window not found"); window.set_always_on_top(true)?; + let app_handle = app.handle().clone(); + tauri::async_runtime::spawn(async move { + let mut interval = tokio::time::interval(Duration::from_secs(10)); + interval.tick().await; + + loop { + interval.tick().await; + + if app_handle.emit("poll_tick", ()).is_err() { + break; + } + } + }); + #[cfg(target_os = "macos")] { use tauri::ActivationPolicy; diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 41e8124..b794df4 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,4 +1,5 @@ { + "$schema": "https://raw.githubusercontent.com/tauri-apps/tauri/refs/heads/dev/crates/tauri-schema-generator/schemas/config.schema.json", "build": { "beforeDevCommand": "pnpm dev", "beforeBuildCommand": "pnpm build", @@ -80,7 +81,7 @@ "trayIcon": { "iconPath": "icons/tray/icon.png", "iconAsTemplate": true, - "menuOnLeftClick": false + "showMenuOnLeftClick": false } } } diff --git a/src/App.vue b/src/App.vue index 4998b24..e63ea0f 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,7 +1,8 @@