@capawesome/capacitor-in-app-browser 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CapawesomeCapacitorInAppBrowser.podspec +17 -0
- package/LICENSE +21 -0
- package/Package.swift +28 -0
- package/README.md +690 -0
- package/android/build.gradle +60 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/InAppBrowser.java +242 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/InAppBrowserPlugin.java +289 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/CustomException.java +20 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/CustomExceptions.java +20 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/WebViewDialog.java +343 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/events/BrowserPageNavigationCompletedEvent.java +23 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/events/MessageReceivedEvent.java +23 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/ExecuteScriptOptions.java +29 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/GetCookiesOptions.java +29 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/OpenInExternalBrowserOptions.java +30 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/OpenInSystemBrowserOptions.java +74 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/OpenInWebViewOptions.java +112 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/PostMessageOptions.java +30 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/WebViewToolbarOptions.java +87 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/results/ExecuteScriptResult.java +25 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/results/GetCookiesResult.java +28 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/interfaces/Callback.java +5 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/interfaces/EmptyCallback.java +5 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/interfaces/NonEmptyResultCallback.java +7 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/interfaces/Result.java +7 -0
- package/android/src/main/res/.gitkeep +0 -0
- package/dist/docs.json +1173 -0
- package/dist/esm/definitions.d.ts +540 -0
- package/dist/esm/definitions.js +19 -0
- package/dist/esm/definitions.js.map +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/web.d.ts +14 -0
- package/dist/esm/web.js +35 -0
- package/dist/esm/web.js.map +1 -0
- package/dist/plugin.cjs.js +68 -0
- package/dist/plugin.cjs.js.map +1 -0
- package/dist/plugin.js +71 -0
- package/dist/plugin.js.map +1 -0
- package/ios/Plugin/Classes/Events/BrowserPageNavigationCompletedEvent.swift +16 -0
- package/ios/Plugin/Classes/Events/MessageReceivedEvent.swift +24 -0
- package/ios/Plugin/Classes/Options/ExecuteScriptOptions.swift +17 -0
- package/ios/Plugin/Classes/Options/GetCookiesOptions.swift +20 -0
- package/ios/Plugin/Classes/Options/OpenInExternalBrowserOptions.swift +20 -0
- package/ios/Plugin/Classes/Options/OpenInSystemBrowserOptions.swift +52 -0
- package/ios/Plugin/Classes/Options/OpenInWebViewOptions.swift +48 -0
- package/ios/Plugin/Classes/Options/PostMessageOptions.swift +17 -0
- package/ios/Plugin/Classes/Options/WebViewToolbarOptions.swift +37 -0
- package/ios/Plugin/Classes/Results/ExecuteScriptResult.swift +25 -0
- package/ios/Plugin/Classes/Results/GetCookiesResult.swift +20 -0
- package/ios/Plugin/Classes/WebViewController.swift +224 -0
- package/ios/Plugin/Enums/CustomError.swift +49 -0
- package/ios/Plugin/InAppBrowser.swift +194 -0
- package/ios/Plugin/InAppBrowserHelper.swift +49 -0
- package/ios/Plugin/InAppBrowserPlugin.swift +191 -0
- package/ios/Plugin/Info.plist +24 -0
- package/ios/Plugin/Protocols/Result.swift +5 -0
- package/package.json +91 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import Capacitor
|
|
3
|
+
|
|
4
|
+
@objc(InAppBrowserPlugin)
|
|
5
|
+
public class InAppBrowserPlugin: CAPPlugin, CAPBridgedPlugin {
|
|
6
|
+
public let identifier = "InAppBrowserPlugin"
|
|
7
|
+
public let jsName = "InAppBrowser"
|
|
8
|
+
public let pluginMethods: [CAPPluginMethod] = [
|
|
9
|
+
CAPPluginMethod(name: "clearCache", returnType: CAPPluginReturnPromise),
|
|
10
|
+
CAPPluginMethod(name: "clearSessionData", returnType: CAPPluginReturnPromise),
|
|
11
|
+
CAPPluginMethod(name: "close", returnType: CAPPluginReturnPromise),
|
|
12
|
+
CAPPluginMethod(name: "executeScript", returnType: CAPPluginReturnPromise),
|
|
13
|
+
CAPPluginMethod(name: "getCookies", returnType: CAPPluginReturnPromise),
|
|
14
|
+
CAPPluginMethod(name: "openInExternalBrowser", returnType: CAPPluginReturnPromise),
|
|
15
|
+
CAPPluginMethod(name: "openInSystemBrowser", returnType: CAPPluginReturnPromise),
|
|
16
|
+
CAPPluginMethod(name: "openInWebView", returnType: CAPPluginReturnPromise),
|
|
17
|
+
CAPPluginMethod(name: "postMessage", returnType: CAPPluginReturnPromise)
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
public static let eventBrowserClosed = "browserClosed"
|
|
21
|
+
public static let eventBrowserPageLoaded = "browserPageLoaded"
|
|
22
|
+
public static let eventBrowserPageNavigationCompleted = "browserPageNavigationCompleted"
|
|
23
|
+
public static let eventMessageReceived = "messageReceived"
|
|
24
|
+
public static let tag = "InAppBrowserPlugin"
|
|
25
|
+
|
|
26
|
+
private var implementation: InAppBrowser?
|
|
27
|
+
|
|
28
|
+
@objc func clearCache(_ call: CAPPluginCall) {
|
|
29
|
+
implementation?.clearCache(completion: { error in
|
|
30
|
+
if let error = error {
|
|
31
|
+
self.rejectCall(call, error)
|
|
32
|
+
return
|
|
33
|
+
}
|
|
34
|
+
self.resolveCall(call)
|
|
35
|
+
})
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@objc func clearSessionData(_ call: CAPPluginCall) {
|
|
39
|
+
implementation?.clearSessionData(completion: { error in
|
|
40
|
+
if let error = error {
|
|
41
|
+
self.rejectCall(call, error)
|
|
42
|
+
return
|
|
43
|
+
}
|
|
44
|
+
self.resolveCall(call)
|
|
45
|
+
})
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@objc func close(_ call: CAPPluginCall) {
|
|
49
|
+
implementation?.close(completion: { error in
|
|
50
|
+
if let error = error {
|
|
51
|
+
self.rejectCall(call, error)
|
|
52
|
+
return
|
|
53
|
+
}
|
|
54
|
+
self.resolveCall(call)
|
|
55
|
+
})
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@objc func executeScript(_ call: CAPPluginCall) {
|
|
59
|
+
do {
|
|
60
|
+
let options = try ExecuteScriptOptions(call)
|
|
61
|
+
|
|
62
|
+
implementation?.executeScript(options, completion: { result, error in
|
|
63
|
+
if let error = error {
|
|
64
|
+
self.rejectCall(call, error)
|
|
65
|
+
return
|
|
66
|
+
}
|
|
67
|
+
self.resolveCall(call, result)
|
|
68
|
+
})
|
|
69
|
+
} catch {
|
|
70
|
+
rejectCall(call, error)
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@objc func getCookies(_ call: CAPPluginCall) {
|
|
75
|
+
do {
|
|
76
|
+
let options = try GetCookiesOptions(call)
|
|
77
|
+
|
|
78
|
+
implementation?.getCookies(options, completion: { result, error in
|
|
79
|
+
if let error = error {
|
|
80
|
+
self.rejectCall(call, error)
|
|
81
|
+
return
|
|
82
|
+
}
|
|
83
|
+
self.resolveCall(call, result)
|
|
84
|
+
})
|
|
85
|
+
} catch {
|
|
86
|
+
rejectCall(call, error)
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
override public func load() {
|
|
91
|
+
self.implementation = InAppBrowser(plugin: self)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@objc public func notifyBrowserClosedListeners() {
|
|
95
|
+
self.notifyListeners(Self.eventBrowserClosed, data: [:])
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
@objc public func notifyBrowserPageLoadedListeners() {
|
|
99
|
+
self.notifyListeners(Self.eventBrowserPageLoaded, data: [:])
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
@objc public func notifyBrowserPageNavigationCompletedListeners(_ event: BrowserPageNavigationCompletedEvent) {
|
|
103
|
+
self.notifyListeners(Self.eventBrowserPageNavigationCompleted, data: event.toJSObject() as? [String: Any])
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
@objc public func notifyMessageReceivedListeners(_ event: MessageReceivedEvent) {
|
|
107
|
+
self.notifyListeners(Self.eventMessageReceived, data: event.toJSObject() as? [String: Any])
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
@objc func openInExternalBrowser(_ call: CAPPluginCall) {
|
|
111
|
+
do {
|
|
112
|
+
let options = try OpenInExternalBrowserOptions(call)
|
|
113
|
+
|
|
114
|
+
implementation?.openInExternalBrowser(options, completion: { error in
|
|
115
|
+
if let error = error {
|
|
116
|
+
self.rejectCall(call, error)
|
|
117
|
+
return
|
|
118
|
+
}
|
|
119
|
+
self.resolveCall(call)
|
|
120
|
+
})
|
|
121
|
+
} catch {
|
|
122
|
+
rejectCall(call, error)
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
@objc func openInSystemBrowser(_ call: CAPPluginCall) {
|
|
127
|
+
do {
|
|
128
|
+
let options = try OpenInSystemBrowserOptions(call)
|
|
129
|
+
|
|
130
|
+
implementation?.openInSystemBrowser(options, completion: { error in
|
|
131
|
+
if let error = error {
|
|
132
|
+
self.rejectCall(call, error)
|
|
133
|
+
return
|
|
134
|
+
}
|
|
135
|
+
self.resolveCall(call)
|
|
136
|
+
})
|
|
137
|
+
} catch {
|
|
138
|
+
rejectCall(call, error)
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
@objc func openInWebView(_ call: CAPPluginCall) {
|
|
143
|
+
do {
|
|
144
|
+
let options = try OpenInWebViewOptions(call)
|
|
145
|
+
|
|
146
|
+
implementation?.openInWebView(options, completion: { error in
|
|
147
|
+
if let error = error {
|
|
148
|
+
self.rejectCall(call, error)
|
|
149
|
+
return
|
|
150
|
+
}
|
|
151
|
+
self.resolveCall(call)
|
|
152
|
+
})
|
|
153
|
+
} catch {
|
|
154
|
+
rejectCall(call, error)
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
@objc func postMessage(_ call: CAPPluginCall) {
|
|
159
|
+
do {
|
|
160
|
+
let options = try PostMessageOptions(call)
|
|
161
|
+
|
|
162
|
+
implementation?.postMessage(options, completion: { error in
|
|
163
|
+
if let error = error {
|
|
164
|
+
self.rejectCall(call, error)
|
|
165
|
+
return
|
|
166
|
+
}
|
|
167
|
+
self.resolveCall(call)
|
|
168
|
+
})
|
|
169
|
+
} catch {
|
|
170
|
+
rejectCall(call, error)
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
private func rejectCall(_ call: CAPPluginCall, _ error: Error) {
|
|
175
|
+
CAPLog.print("[", InAppBrowserPlugin.tag, "] ", error)
|
|
176
|
+
let code = (error as? CustomError)?.code
|
|
177
|
+
call.reject(error.localizedDescription, code)
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
private func resolveCall(_ call: CAPPluginCall) {
|
|
181
|
+
call.resolve()
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
private func resolveCall(_ call: CAPPluginCall, _ result: Result?) {
|
|
185
|
+
if let result = result?.toJSObject() as? JSObject {
|
|
186
|
+
call.resolve(result)
|
|
187
|
+
} else {
|
|
188
|
+
call.resolve()
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>CFBundleDevelopmentRegion</key>
|
|
6
|
+
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
|
7
|
+
<key>CFBundleExecutable</key>
|
|
8
|
+
<string>$(EXECUTABLE_NAME)</string>
|
|
9
|
+
<key>CFBundleIdentifier</key>
|
|
10
|
+
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
|
11
|
+
<key>CFBundleInfoDictionaryVersion</key>
|
|
12
|
+
<string>6.0</string>
|
|
13
|
+
<key>CFBundleName</key>
|
|
14
|
+
<string>$(PRODUCT_NAME)</string>
|
|
15
|
+
<key>CFBundlePackageType</key>
|
|
16
|
+
<string>FMWK</string>
|
|
17
|
+
<key>CFBundleShortVersionString</key>
|
|
18
|
+
<string>1.0</string>
|
|
19
|
+
<key>CFBundleVersion</key>
|
|
20
|
+
<string>$(CURRENT_PROJECT_VERSION)</string>
|
|
21
|
+
<key>NSPrincipalClass</key>
|
|
22
|
+
<string></string>
|
|
23
|
+
</dict>
|
|
24
|
+
</plist>
|
package/package.json
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@capawesome/capacitor-in-app-browser",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Capacitor plugin to open URLs in the external browser, the system browser or an embedded web view.",
|
|
5
|
+
"main": "dist/plugin.cjs.js",
|
|
6
|
+
"module": "dist/esm/index.js",
|
|
7
|
+
"types": "dist/esm/index.d.ts",
|
|
8
|
+
"unpkg": "dist/plugin.js",
|
|
9
|
+
"files": [
|
|
10
|
+
"android/src/main/",
|
|
11
|
+
"android/build.gradle",
|
|
12
|
+
"dist/",
|
|
13
|
+
"ios/Plugin/",
|
|
14
|
+
"CapawesomeCapacitorInAppBrowser.podspec",
|
|
15
|
+
"Package.swift"
|
|
16
|
+
],
|
|
17
|
+
"author": "Robin Genz <mail@robingenz.dev>",
|
|
18
|
+
"license": "MIT",
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git+https://github.com/capawesome-team/capacitor-plugins.git"
|
|
22
|
+
},
|
|
23
|
+
"bugs": {
|
|
24
|
+
"url": "https://github.com/capawesome-team/capacitor-plugins/issues"
|
|
25
|
+
},
|
|
26
|
+
"funding": [
|
|
27
|
+
{
|
|
28
|
+
"type": "github",
|
|
29
|
+
"url": "https://github.com/sponsors/capawesome-team/"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"type": "opencollective",
|
|
33
|
+
"url": "https://opencollective.com/capawesome"
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"homepage": "https://capawesome.io/docs/plugins/in-app-browser/",
|
|
37
|
+
"keywords": [
|
|
38
|
+
"capacitor",
|
|
39
|
+
"plugin",
|
|
40
|
+
"native"
|
|
41
|
+
],
|
|
42
|
+
"scripts": {
|
|
43
|
+
"verify": "npm run verify:ios && npm run verify:android && npm run verify:web",
|
|
44
|
+
"verify:ios": "cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..",
|
|
45
|
+
"verify:android": "cd android && ./gradlew clean build test && cd ..",
|
|
46
|
+
"verify:web": "npm run build",
|
|
47
|
+
"lint": "npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint",
|
|
48
|
+
"fmt": "npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format",
|
|
49
|
+
"eslint": "eslint . --ext ts",
|
|
50
|
+
"prettier": "prettier \"**/*.{css,html,ts,js,java}\"",
|
|
51
|
+
"swiftlint": "node-swiftlint",
|
|
52
|
+
"docgen": "docgen --api InAppBrowserPlugin --output-readme README.md --output-json dist/docs.json",
|
|
53
|
+
"build": "npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs",
|
|
54
|
+
"clean": "rimraf ./dist",
|
|
55
|
+
"watch": "tsc --watch",
|
|
56
|
+
"ios:pod:install": "cd ios && pod install --repo-update && cd ..",
|
|
57
|
+
"ios:spm:install": "cd ios && swift package resolve && cd ..",
|
|
58
|
+
"prepublishOnly": "npm run build"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@capacitor/android": "8.0.0",
|
|
62
|
+
"@capacitor/cli": "8.0.0",
|
|
63
|
+
"@capacitor/core": "8.0.0",
|
|
64
|
+
"@capacitor/docgen": "0.3.1",
|
|
65
|
+
"@capacitor/ios": "8.0.0",
|
|
66
|
+
"@ionic/eslint-config": "0.4.0",
|
|
67
|
+
"eslint": "8.57.0",
|
|
68
|
+
"prettier-plugin-java": "2.6.7",
|
|
69
|
+
"rimraf": "6.1.2",
|
|
70
|
+
"rollup": "4.53.3",
|
|
71
|
+
"swiftlint": "2.0.0",
|
|
72
|
+
"typescript": "5.9.3"
|
|
73
|
+
},
|
|
74
|
+
"peerDependencies": {
|
|
75
|
+
"@capacitor/core": ">=8.0.0"
|
|
76
|
+
},
|
|
77
|
+
"eslintConfig": {
|
|
78
|
+
"extends": "@ionic/eslint-config/recommended"
|
|
79
|
+
},
|
|
80
|
+
"capacitor": {
|
|
81
|
+
"ios": {
|
|
82
|
+
"src": "ios"
|
|
83
|
+
},
|
|
84
|
+
"android": {
|
|
85
|
+
"src": "android"
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"publishConfig": {
|
|
89
|
+
"access": "public"
|
|
90
|
+
}
|
|
91
|
+
}
|