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