From a72c8f239138ed35c3ad7004f0331e27a8c3e199 Mon Sep 17 00:00:00 2001 From: Huang Xin Date: Sat, 29 Mar 2025 14:27:18 +0800 Subject: [PATCH] refactor: rename plugin safari-auth to native-bridge (#749) * fix: layout tweaks for mobile * refactor: rename plugin safari-auth to native-bridge --- Cargo.lock | 23 +++++++-------- apps/readest-app/src-tauri/Cargo.toml | 2 +- .../src-tauri/capabilities/default.json | 2 +- .../.gitignore | 0 .../tauri-plugin-native-bridge/Cargo.toml | 19 +++++++++++++ .../tauri-plugin-native-bridge/README.md | 1 + .../android/.gitignore | 0 .../android/build.gradle.kts | 2 +- .../android/proguard-rules.pro | 0 .../android/settings.gradle | 0 .../java/ExampleInstrumentedTest.kt | 4 +-- .../android/src/main/AndroidManifest.xml | 0 .../android/src/main/java/NativeBridge.kt | 9 ++++++ .../src/main/java/NativeBridgePlugin.kt | 28 +++++++++++++++++++ .../android/src/test/java/ExampleUnitTest.kt | 2 +- .../tauri-plugin-native-bridge/build.rs | 8 ++++++ .../ios/.gitignore | 0 .../ios/Package.swift | 8 +++--- .../ios/README.md | 2 +- .../ios/Sources/NativeBridgePlugin.swift} | 18 +++++------- .../ios/Tests/PluginTests/PluginTests.swift | 8 ++++++ .../commands/auth_with_safari.toml | 0 .../permissions/autogenerated/reference.md | 4 +-- .../permissions/default.toml | 0 .../permissions/schemas/schema.json | 0 .../src/commands.rs | 4 +-- .../src/desktop.rs | 10 +++---- .../src/error.rs | 2 ++ .../src/lib.rs | 25 +++++++++-------- .../src/mobile.rs | 17 ++++++----- .../src/models.rs | 0 .../src/platform/macos.rs | 0 .../src/platform/mod.rs | 2 ++ .../tauri-plugin-safari-auth/Cargo.toml | 17 ----------- .../tauri-plugin-safari-auth/README.md | 1 - .../android/src/main/java/Example.kt | 10 ------- .../android/src/main/java/ExamplePlugin.kt | 28 ------------------- .../plugins/tauri-plugin-safari-auth/build.rs | 8 ------ .../ios/Tests/PluginTests/PluginTests.swift | 8 ------ apps/readest-app/src-tauri/src/lib.rs | 5 ++-- apps/readest-app/src/app/auth/page.tsx | 1 - .../src/app/auth/utils/safariAuth.ts | 2 +- .../app/library/components/LibraryHeader.tsx | 2 +- apps/readest-app/src/app/library/page.tsx | 2 +- .../reader/components/annotator/Annotator.tsx | 4 ++- apps/readest-app/src/app/user/page.tsx | 1 - 46 files changed, 145 insertions(+), 144 deletions(-) rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/.gitignore (100%) create mode 100644 apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/Cargo.toml create mode 100644 apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/README.md rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/android/.gitignore (100%) rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/android/build.gradle.kts (96%) rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/android/proguard-rules.pro (100%) rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/android/settings.gradle (100%) rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/android/src/androidTest/java/ExampleInstrumentedTest.kt (84%) rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/android/src/main/AndroidManifest.xml (100%) create mode 100644 apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/src/main/java/NativeBridge.kt create mode 100644 apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/src/main/java/NativeBridgePlugin.kt rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/android/src/test/java/ExampleUnitTest.kt (90%) create mode 100644 apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/build.rs rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/ios/.gitignore (100%) rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/ios/Package.swift (82%) rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/ios/README.md (52%) rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth/ios/Sources/SafariAuthPlugin.swift => tauri-plugin-native-bridge/ios/Sources/NativeBridgePlugin.swift} (80%) create mode 100644 apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/ios/Tests/PluginTests/PluginTests.swift rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/permissions/autogenerated/commands/auth_with_safari.toml (100%) rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/permissions/autogenerated/reference.md (83%) rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/permissions/default.toml (100%) rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/permissions/schemas/schema.json (100%) rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/src/commands.rs (75%) rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/src/desktop.rs (66%) rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/src/error.rs (89%) rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/src/lib.rs (52%) rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/src/mobile.rs (59%) rename apps/readest-app/src-tauri/plugins/{tauri-plugin-safari-auth => tauri-plugin-native-bridge}/src/models.rs (100%) create mode 100644 apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/platform/macos.rs create mode 100644 apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/platform/mod.rs delete mode 100644 apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/Cargo.toml delete mode 100644 apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/README.md delete mode 100644 apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/src/main/java/Example.kt delete mode 100644 apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/src/main/java/ExamplePlugin.kt delete mode 100644 apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/build.rs delete mode 100644 apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/ios/Tests/PluginTests/PluginTests.swift diff --git a/Cargo.lock b/Cargo.lock index cac48d41..68ab754c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -26,11 +26,11 @@ dependencies = [ "tauri-plugin-haptics", "tauri-plugin-http", "tauri-plugin-log", + "tauri-plugin-native-bridge", "tauri-plugin-oauth", "tauri-plugin-opener", "tauri-plugin-os", "tauri-plugin-process", - "tauri-plugin-safari-auth", "tauri-plugin-shell", "tauri-plugin-sign-in-with-apple", "tauri-plugin-single-instance", @@ -5316,6 +5316,17 @@ dependencies = [ "time", ] +[[package]] +name = "tauri-plugin-native-bridge" +version = "0.1.0" +dependencies = [ + "schemars", + "serde", + "tauri", + "tauri-plugin", + "thiserror 2.0.12", +] + [[package]] name = "tauri-plugin-oauth" version = "2.0.0" @@ -5381,16 +5392,6 @@ dependencies = [ "tauri-plugin", ] -[[package]] -name = "tauri-plugin-safari-auth" -version = "0.1.0" -dependencies = [ - "serde", - "tauri", - "tauri-plugin", - "thiserror 2.0.12", -] - [[package]] name = "tauri-plugin-shell" version = "2.2.0" diff --git a/apps/readest-app/src-tauri/Cargo.toml b/apps/readest-app/src-tauri/Cargo.toml index b4ee4b8b..a122de19 100644 --- a/apps/readest-app/src-tauri/Cargo.toml +++ b/apps/readest-app/src-tauri/Cargo.toml @@ -46,7 +46,7 @@ tauri-plugin-opener = "2.2.2" tauri-plugin-deep-link = "2" tauri-plugin-sign-in-with-apple = "1.0.2" tauri-plugin-haptics = "2.2.3" -tauri-plugin-safari-auth = { path = "./plugins/tauri-plugin-safari-auth" } +tauri-plugin-native-bridge = { path = "./plugins/tauri-plugin-native-bridge" } [patch.crates-io] tauri = { path = "../../../packages/tauri/crates/tauri" } diff --git a/apps/readest-app/src-tauri/capabilities/default.json b/apps/readest-app/src-tauri/capabilities/default.json index dac6392c..90e78ce9 100644 --- a/apps/readest-app/src-tauri/capabilities/default.json +++ b/apps/readest-app/src-tauri/capabilities/default.json @@ -75,7 +75,7 @@ "haptics:allow-impact-feedback", "haptics:allow-notification-feedback", "haptics:allow-selection-feedback", - "safari-auth:default", + "native-bridge:default", "deep-link:default" ] } diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/.gitignore b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/.gitignore similarity index 100% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/.gitignore rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/.gitignore diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/Cargo.toml b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/Cargo.toml new file mode 100644 index 00000000..7674be76 --- /dev/null +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "tauri-plugin-native-bridge" +version = "0.1.0" +authors = [ "You" ] +description = "a bridge between tauri app and native OS functionality" +edition = "2021" +rust-version = "1.77.2" +exclude = ["/examples", "/dist-js", "/guest-js", "/node_modules"] +links = "tauri-plugin-native-bridge" + +[dependencies] +tauri = { version = "2.3.1" } +serde = "1.0" +thiserror = "2" +schemars = "0.8" + +[build-dependencies] +tauri-plugin = { version = "2.0.4", features = ["build"] } +schemars = "0.8" diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/README.md b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/README.md new file mode 100644 index 00000000..ec94c795 --- /dev/null +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/README.md @@ -0,0 +1 @@ +# Tauri Plugin native-bridge diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/.gitignore b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/.gitignore similarity index 100% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/.gitignore rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/.gitignore diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/build.gradle.kts b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/build.gradle.kts similarity index 96% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/build.gradle.kts rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/build.gradle.kts index 220ddcb3..31a400e0 100644 --- a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/build.gradle.kts +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } android { - namespace = "com.plugin.safari_auth" + namespace = "com.readest.native_bridge" compileSdk = 34 defaultConfig { diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/proguard-rules.pro b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/proguard-rules.pro similarity index 100% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/proguard-rules.pro rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/proguard-rules.pro diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/settings.gradle b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/settings.gradle similarity index 100% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/settings.gradle rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/settings.gradle diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/src/androidTest/java/ExampleInstrumentedTest.kt b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/src/androidTest/java/ExampleInstrumentedTest.kt similarity index 84% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/src/androidTest/java/ExampleInstrumentedTest.kt rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/src/androidTest/java/ExampleInstrumentedTest.kt index f421ced8..87fd489e 100644 --- a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/src/androidTest/java/ExampleInstrumentedTest.kt +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/src/androidTest/java/ExampleInstrumentedTest.kt @@ -1,4 +1,4 @@ -package com.plugin.safari_auth +package com.readest.native_bridge import androidx.test.platform.app.InstrumentationRegistry import androidx.test.ext.junit.runners.AndroidJUnit4 @@ -19,6 +19,6 @@ class ExampleInstrumentedTest { fun useAppContext() { // Context of the app under test. val appContext = InstrumentationRegistry.getInstrumentation().targetContext - assertEquals("com.plugin.safari_auth", appContext.packageName) + assertEquals("com.readest.native_bridge", appContext.packageName) } } diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/src/main/AndroidManifest.xml b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/src/main/AndroidManifest.xml similarity index 100% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/src/main/AndroidManifest.xml rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/src/main/AndroidManifest.xml diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/src/main/java/NativeBridge.kt b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/src/main/java/NativeBridge.kt new file mode 100644 index 00000000..976fca67 --- /dev/null +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/src/main/java/NativeBridge.kt @@ -0,0 +1,9 @@ +package com.readest.native_bridge + +import android.util.Log + +class NativeBridge { + fun auth_with_safari(value: String): String { + return "" + } +} diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/src/main/java/NativeBridgePlugin.kt b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/src/main/java/NativeBridgePlugin.kt new file mode 100644 index 00000000..00e06c50 --- /dev/null +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/src/main/java/NativeBridgePlugin.kt @@ -0,0 +1,28 @@ +package com.readest.native_bridge + +import android.app.Activity +import app.tauri.annotation.Command +import app.tauri.annotation.InvokeArg +import app.tauri.annotation.TauriPlugin +import app.tauri.plugin.JSObject +import app.tauri.plugin.Plugin +import app.tauri.plugin.Invoke + +@InvokeArg +class SafariAuthRequestArgs { + var authUrl: String? = null +} + +@TauriPlugin +class NativeBridgePlugin(private val activity: Activity): Plugin(activity) { + private val implementation = NativeBridge() + + @Command + fun auth_with_safari(invoke: Invoke) { + val args = invoke.parseArgs(SafariAuthRequestArgs::class.java) + + val ret = JSObject() + ret.put("redirectUrl", implementation.auth_with_safari(args.authUrl ?: "")) + invoke.resolve(ret) + } +} diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/src/test/java/ExampleUnitTest.kt b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/src/test/java/ExampleUnitTest.kt similarity index 90% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/src/test/java/ExampleUnitTest.kt rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/src/test/java/ExampleUnitTest.kt index 41d796eb..a7350dd9 100644 --- a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/src/test/java/ExampleUnitTest.kt +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/android/src/test/java/ExampleUnitTest.kt @@ -1,4 +1,4 @@ -package com.plugin.safari_auth +package com.readest.native_bridge import org.junit.Test diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/build.rs b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/build.rs new file mode 100644 index 00000000..8254cdef --- /dev/null +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/build.rs @@ -0,0 +1,8 @@ +const COMMANDS: &[&str] = &["auth_with_safari"]; + +fn main() { + tauri_plugin::Builder::new(COMMANDS) + .android_path("android") + .ios_path("ios") + .build(); +} diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/ios/.gitignore b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/ios/.gitignore similarity index 100% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/ios/.gitignore rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/ios/.gitignore diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/ios/Package.swift b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/ios/Package.swift similarity index 82% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/ios/Package.swift rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/ios/Package.swift index 4c4ee351..26e46c40 100644 --- a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/ios/Package.swift +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/ios/Package.swift @@ -4,7 +4,7 @@ import PackageDescription let package = Package( - name: "tauri-plugin-safari-auth", + name: "tauri-plugin-native-bridge", platforms: [ .macOS(.v10_13), .iOS(.v13), @@ -12,9 +12,9 @@ let package = Package( products: [ // Products define the executables and libraries a package produces, and make them visible to other packages. .library( - name: "tauri-plugin-safari-auth", + name: "tauri-plugin-native-bridge", type: .static, - targets: ["tauri-plugin-safari-auth"]), + targets: ["tauri-plugin-native-bridge"]), ], dependencies: [ .package(name: "Tauri", path: "../.tauri/tauri-api") @@ -23,7 +23,7 @@ let package = Package( // Targets are the basic building blocks of a package. A target can define a module or a test suite. // Targets can depend on other targets in this package, and on products in packages this package depends on. .target( - name: "tauri-plugin-safari-auth", + name: "tauri-plugin-native-bridge", dependencies: [ .byName(name: "Tauri") ], diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/ios/README.md b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/ios/README.md similarity index 52% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/ios/README.md rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/ios/README.md index 42b76e15..6974a4db 100644 --- a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/ios/README.md +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/ios/README.md @@ -1,3 +1,3 @@ -# Tauri Plugin safari-auth +# Tauri Plugin native-bridge A description of this package. diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/ios/Sources/SafariAuthPlugin.swift b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/ios/Sources/NativeBridgePlugin.swift similarity index 80% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/ios/Sources/SafariAuthPlugin.swift rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/ios/Sources/NativeBridgePlugin.swift index 4caa0fbc..bcca8291 100644 --- a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/ios/Sources/SafariAuthPlugin.swift +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/ios/Sources/NativeBridgePlugin.swift @@ -4,19 +4,15 @@ import Tauri import UIKit import WebKit -class RequestArgs: Decodable { +class SafariAuthRequestArgs: Decodable { let authUrl: String } -struct Response: Encodable { - let redirectUrl: String -} - -class SafariAuthPlugin: Plugin { +class NativeBridgePlugin: Plugin { private var authSession: ASWebAuthenticationSession? @objc public func auth_with_safari(_ invoke: Invoke) throws { - let args = try invoke.parseArgs(RequestArgs.self) + let args = try invoke.parseArgs(SafariAuthRequestArgs.self) let authUrl = URL(string: args.authUrl)! authSession = ASWebAuthenticationSession(url: authUrl, callbackURLScheme: "readest") { @@ -46,14 +42,14 @@ class SafariAuthPlugin: Plugin { } } -@_cdecl("init_plugin_safari_auth") +@_cdecl("init_plugin_native_bridge") func initPlugin() -> Plugin { - return SafariAuthPlugin() + return NativeBridgePlugin() } @available(iOS 13.0, *) -extension SafariAuthPlugin: ASWebAuthenticationPresentationContextProviding { +extension NativeBridgePlugin: ASWebAuthenticationPresentationContextProviding { func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor { return UIApplication.shared.windows.first ?? UIWindow() } -} +} \ No newline at end of file diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/ios/Tests/PluginTests/PluginTests.swift b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/ios/Tests/PluginTests/PluginTests.swift new file mode 100644 index 00000000..cc9f87d0 --- /dev/null +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/ios/Tests/PluginTests/PluginTests.swift @@ -0,0 +1,8 @@ +import XCTest +@testable import NativeBridgePlugin + +final class NativeBridgePluginTests: XCTestCase { + func testNativeBridge() throws { + let plugin = NativeBridgePlugin() + } +} diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/permissions/autogenerated/commands/auth_with_safari.toml b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/permissions/autogenerated/commands/auth_with_safari.toml similarity index 100% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/permissions/autogenerated/commands/auth_with_safari.toml rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/permissions/autogenerated/commands/auth_with_safari.toml diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/permissions/autogenerated/reference.md b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/permissions/autogenerated/reference.md similarity index 83% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/permissions/autogenerated/reference.md rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/permissions/autogenerated/reference.md index 47dca41b..54c183a4 100644 --- a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/permissions/autogenerated/reference.md +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/permissions/autogenerated/reference.md @@ -16,7 +16,7 @@ Default permissions for the plugin -`safari-auth:allow-auth-with-safari` +`native-bridge:allow-auth-with-safari` @@ -29,7 +29,7 @@ Enables the auth_with_safari command without any pre-configured scope. -`safari-auth:deny-auth-with-safari` +`native-bridge:deny-auth-with-safari` diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/permissions/default.toml b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/permissions/default.toml similarity index 100% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/permissions/default.toml rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/permissions/default.toml diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/permissions/schemas/schema.json b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/permissions/schemas/schema.json similarity index 100% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/permissions/schemas/schema.json rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/permissions/schemas/schema.json diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/src/commands.rs b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/commands.rs similarity index 75% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/src/commands.rs rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/commands.rs index ec71c6e3..9aba26ba 100644 --- a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/src/commands.rs +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/commands.rs @@ -1,13 +1,13 @@ use tauri::{command, AppHandle, Runtime}; use crate::models::*; +use crate::NativeBridgeExt; use crate::Result; -use crate::SafariAuthExt; #[command] pub(crate) async fn auth_with_safari( app: AppHandle, payload: SafariAuthRequest, ) -> Result { - app.safari_auth().auth_with_safari(payload) + app.native_bridge().auth_with_safari(payload) } diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/src/desktop.rs b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/desktop.rs similarity index 66% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/src/desktop.rs rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/desktop.rs index 291fdb63..56edd6d0 100644 --- a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/src/desktop.rs +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/desktop.rs @@ -6,14 +6,14 @@ use crate::models::*; pub fn init( app: &AppHandle, _api: PluginApi, -) -> crate::Result> { - Ok(SafariAuth(app.clone())) +) -> crate::Result> { + Ok(NativeBridge(app.clone())) } -/// Access to the safari-auth APIs. -pub struct SafariAuth(AppHandle); +/// Access to the native-bridge APIs. +pub struct NativeBridge(AppHandle); -impl SafariAuth { +impl NativeBridge { pub fn auth_with_safari( &self, _payload: SafariAuthRequest, diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/src/error.rs b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/error.rs similarity index 89% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/src/error.rs rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/error.rs index d61fe8cd..ab5c5d17 100644 --- a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/src/error.rs +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/error.rs @@ -6,6 +6,8 @@ pub type Result = std::result::Result; pub enum Error { #[error("Unsupported platform for this plugin")] UnsupportedPlatformError, + #[error("Native bridge error: {0}")] + NativeBridgeError(String), #[error(transparent)] Io(#[from] std::io::Error), #[cfg(mobile)] diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/src/lib.rs b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/lib.rs similarity index 52% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/src/lib.rs rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/lib.rs index db56f97f..78083ada 100644 --- a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/src/lib.rs +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/lib.rs @@ -13,35 +13,36 @@ mod mobile; mod commands; mod error; mod models; +mod platform; pub use error::{Error, Result}; #[cfg(desktop)] -use desktop::SafariAuth; +use desktop::NativeBridge; #[cfg(mobile)] -use mobile::SafariAuth; +use mobile::NativeBridge; -/// Extensions to [`tauri::App`], [`tauri::AppHandle`] and [`tauri::Window`] to access the safari-auth APIs. -pub trait SafariAuthExt { - fn safari_auth(&self) -> &SafariAuth; +/// Extensions to [`tauri::App`], [`tauri::AppHandle`] and [`tauri::Window`] to access the native-bridge APIs. +pub trait NativeBridgeExt { + fn native_bridge(&self) -> &NativeBridge; } -impl> crate::SafariAuthExt for T { - fn safari_auth(&self) -> &SafariAuth { - self.state::>().inner() +impl> crate::NativeBridgeExt for T { + fn native_bridge(&self) -> &NativeBridge { + self.state::>().inner() } } /// Initializes the plugin. pub fn init() -> TauriPlugin { - Builder::new("safari-auth") + Builder::new("native-bridge") .invoke_handler(tauri::generate_handler![commands::auth_with_safari]) .setup(|app, api| { #[cfg(mobile)] - let safari_auth = mobile::init(app, api)?; + let native_bridge = mobile::init(app, api)?; #[cfg(desktop)] - let safari_auth = desktop::init(app, api)?; - app.manage(safari_auth); + let native_bridge = desktop::init(app, api)?; + app.manage(native_bridge); Ok(()) }) .build() diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/src/mobile.rs b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/mobile.rs similarity index 59% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/src/mobile.rs rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/mobile.rs index 67542fca..ef4b5bda 100644 --- a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/src/mobile.rs +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/mobile.rs @@ -7,25 +7,24 @@ use tauri::{ use crate::models::*; #[cfg(target_os = "ios")] -tauri::ios_plugin_binding!(init_plugin_safari_auth); +tauri::ios_plugin_binding!(init_plugin_native_bridge); // initializes the Kotlin or Swift plugin classes pub fn init( _app: &AppHandle, api: PluginApi, -) -> crate::Result> { +) -> crate::Result> { #[cfg(target_os = "android")] - let handle = api.register_android_plugin("com.bilingify.safari_auth", "ExamplePlugin")?; + let handle = api.register_android_plugin("com.readest.native_bridge", "NativeBridgePlugin")?; #[cfg(target_os = "ios")] - let handle = api.register_ios_plugin(init_plugin_safari_auth)?; - - Ok(SafariAuth(handle)) + let handle = api.register_ios_plugin(init_plugin_native_bridge)?; + Ok(NativeBridge(handle)) } -/// Access to the safari-auth APIs. -pub struct SafariAuth(PluginHandle); +/// Access to the native-bridge APIs. +pub struct NativeBridge(PluginHandle); -impl SafariAuth { +impl NativeBridge { pub fn auth_with_safari( &self, payload: SafariAuthRequest, diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/src/models.rs b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/models.rs similarity index 100% rename from apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/src/models.rs rename to apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/models.rs diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/platform/macos.rs b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/platform/macos.rs new file mode 100644 index 00000000..e69de29b diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/platform/mod.rs b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/platform/mod.rs new file mode 100644 index 00000000..ed50e7d4 --- /dev/null +++ b/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/src/platform/mod.rs @@ -0,0 +1,2 @@ +#[cfg(target_os = "macos")] +pub mod macos; diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/Cargo.toml b/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/Cargo.toml deleted file mode 100644 index 98478bfd..00000000 --- a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/Cargo.toml +++ /dev/null @@ -1,17 +0,0 @@ -[package] -name = "tauri-plugin-safari-auth" -version = "0.1.0" -authors = [ "chrox" ] -description = "OAuth with ASWebAuthenticationSession on iOS" -edition = "2021" -rust-version = "1.77.2" -exclude = ["/examples", "/dist-js", "/guest-js", "/node_modules"] -links = "tauri-plugin-safari-auth" - -[dependencies] -tauri = { version = "2.2.4" } -serde = "1.0" -thiserror = "2" - -[build-dependencies] -tauri-plugin = { version = "2.0.3", features = ["build"] } diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/README.md b/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/README.md deleted file mode 100644 index 0ad04095..00000000 --- a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/README.md +++ /dev/null @@ -1 +0,0 @@ -# Tauri Plugin safari-auth diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/src/main/java/Example.kt b/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/src/main/java/Example.kt deleted file mode 100644 index fc745b27..00000000 --- a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/src/main/java/Example.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.plugin.safari_auth - -import android.util.Log - -class Example { - fun pong(value: String): String { - Log.i("Pong", value) - return value - } -} diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/src/main/java/ExamplePlugin.kt b/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/src/main/java/ExamplePlugin.kt deleted file mode 100644 index 4967d91a..00000000 --- a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/android/src/main/java/ExamplePlugin.kt +++ /dev/null @@ -1,28 +0,0 @@ -package com.plugin.safari_auth - -import android.app.Activity -import app.tauri.annotation.Command -import app.tauri.annotation.InvokeArg -import app.tauri.annotation.TauriPlugin -import app.tauri.plugin.JSObject -import app.tauri.plugin.Plugin -import app.tauri.plugin.Invoke - -@InvokeArg -class PingArgs { - var value: String? = null -} - -@TauriPlugin -class ExamplePlugin(private val activity: Activity): Plugin(activity) { - private val implementation = Example() - - @Command - fun ping(invoke: Invoke) { - val args = invoke.parseArgs(PingArgs::class.java) - - val ret = JSObject() - ret.put("value", implementation.pong(args.value ?: "default value :(")) - invoke.resolve(ret) - } -} diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/build.rs b/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/build.rs deleted file mode 100644 index 01c3a936..00000000 --- a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/build.rs +++ /dev/null @@ -1,8 +0,0 @@ -const COMMANDS: &[&str] = &["auth_with_safari"]; - -fn main() { - tauri_plugin::Builder::new(COMMANDS) - .android_path("android") - .ios_path("ios") - .build(); -} diff --git a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/ios/Tests/PluginTests/PluginTests.swift b/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/ios/Tests/PluginTests/PluginTests.swift deleted file mode 100644 index 978eec27..00000000 --- a/apps/readest-app/src-tauri/plugins/tauri-plugin-safari-auth/ios/Tests/PluginTests/PluginTests.swift +++ /dev/null @@ -1,8 +0,0 @@ -import XCTest -@testable import SafariAuthPlugin - -final class SafariAuthPluginTests: XCTestCase { - func testExample() throws { - let plugin = SafariAuthPlugin() - } -} diff --git a/apps/readest-app/src-tauri/src/lib.rs b/apps/readest-app/src-tauri/src/lib.rs index b7acaccd..95ebf27d 100644 --- a/apps/readest-app/src-tauri/src/lib.rs +++ b/apps/readest-app/src-tauri/src/lib.rs @@ -46,6 +46,7 @@ fn allow_file_in_scopes(app: &AppHandle, files: Vec) { } } +#[cfg(desktop)] fn get_files_from_argv(argv: Vec) -> Vec { let mut files = Vec::new(); // NOTICE: `args` may include URL protocol (`your-app-protocol://`) @@ -143,6 +144,7 @@ pub fn run() { .plugin(tauri_plugin_http::init()) .plugin(tauri_plugin_os::init()) .plugin(tauri_plugin_dialog::init()) + .plugin(tauri_plugin_native_bridge::init()) .plugin(tauri_plugin_fs::init()); #[cfg(desktop)] @@ -173,9 +175,6 @@ pub fn run() { #[cfg(target_os = "ios")] let builder = builder.plugin(tauri_plugin_sign_in_with_apple::init()); - #[cfg(target_os = "ios")] - let builder = builder.plugin(tauri_plugin_safari_auth::init()); - #[cfg(any(target_os = "ios", target_os = "android"))] let builder = builder.plugin(tauri_plugin_haptics::init()); diff --git a/apps/readest-app/src/app/auth/page.tsx b/apps/readest-app/src/app/auth/page.tsx index db617a29..8e851344 100644 --- a/apps/readest-app/src/app/auth/page.tsx +++ b/apps/readest-app/src/app/auth/page.tsx @@ -312,7 +312,6 @@ export default function AuthPage() { ref={headerRef} className={clsx( 'fixed flex w-full items-center justify-between py-2 pe-6 ps-4', - appService?.hasSafeAreaInset && 'mt-[env(safe-area-inset-top)]', appService?.hasTrafficLight && 'pt-11', )} > diff --git a/apps/readest-app/src/app/auth/utils/safariAuth.ts b/apps/readest-app/src/app/auth/utils/safariAuth.ts index 080177a3..6227ef84 100644 --- a/apps/readest-app/src/app/auth/utils/safariAuth.ts +++ b/apps/readest-app/src/app/auth/utils/safariAuth.ts @@ -9,7 +9,7 @@ export interface SafariAuthResponse { } export async function authWithSafari(request: SafariAuthRequest): Promise { - const result = await invoke('plugin:safari-auth|auth_with_safari', { + const result = await invoke('plugin:native-bridge|auth_with_safari', { payload: request, }); diff --git a/apps/readest-app/src/app/library/components/LibraryHeader.tsx b/apps/readest-app/src/app/library/components/LibraryHeader.tsx index c9e3fb80..2a0679e6 100644 --- a/apps/readest-app/src/app/library/components/LibraryHeader.tsx +++ b/apps/readest-app/src/app/library/components/LibraryHeader.tsx @@ -68,7 +68,7 @@ const LibraryHeader: React.FC = ({
= ({ bookKey }) => { saveConfig(envConfig, bookKey, updatedConfig, settings); } handleDismissPopupAndSelection(); - setNotebookVisible(true); + if (!appService?.isMobile) { + setNotebookVisible(true); + } }; const handleHighlight = (update = false) => { diff --git a/apps/readest-app/src/app/user/page.tsx b/apps/readest-app/src/app/user/page.tsx index 90ff9ad5..1147e4da 100644 --- a/apps/readest-app/src/app/user/page.tsx +++ b/apps/readest-app/src/app/user/page.tsx @@ -167,7 +167,6 @@ const ProfilePage = () => { ref={headerRef} className={clsx( 'fixed flex w-full items-center justify-between py-2 pe-6 ps-4', - appService?.hasSafeAreaInset && 'mt-[env(safe-area-inset-top)]', appService?.hasTrafficLight && 'pt-11', )} >