Skip to content

Commit 2d9783a

Browse files
committed
Add iOS cookie support
1 parent d216875 commit 2d9783a

File tree

4 files changed

+37
-5
lines changed

4 files changed

+37
-5
lines changed

ios/Demo-iOS/Sources/ContentView.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,20 @@ import GutenbergKit
44
let editorURL: URL? = ProcessInfo.processInfo.environment["GUTENBERG_EDITOR_URL"].flatMap(URL.init)
55

66
struct ContentView: View {
7+
private let configuration: EditorConfiguration
8+
9+
init(configuration: EditorConfiguration = .default) {
10+
self.configuration = configuration
11+
}
12+
713
var body: some View {
814
NavigationSplitView(preferredCompactColumn: .constant(.detail), sidebar: {
915
EmptyView()
1016
}, detail: {
11-
EditorView(editorURL: editorURL).navigationBarBackButtonHidden()
17+
EditorView(
18+
editorURL: editorURL,
19+
editorConfiguration: configuration
20+
).navigationBarBackButtonHidden()
1221
})
1322
}
1423
}

ios/Demo-iOS/Sources/EditorView.swift

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,18 @@ import SwiftUI
22
import GutenbergKit
33

44
struct EditorView: View {
5-
var editorURL: URL?
5+
6+
private let editorURL: URL?
7+
8+
private let editorConfiguration: EditorConfiguration
9+
10+
init(editorURL: URL? = nil, editorConfiguration: EditorConfiguration = .default) {
11+
self.editorURL = editorURL
12+
self.editorConfiguration = editorConfiguration
13+
}
614

715
var body: some View {
8-
_EditorView(editorURL: editorURL)
16+
_EditorView(editorURL: editorURL, configuration: editorConfiguration)
917
.toolbar {
1018
ToolbarItemGroup(placement: .topBarLeading) {
1119
Button(action: {}, label: {
@@ -69,10 +77,18 @@ struct EditorView: View {
6977
}
7078

7179
private struct _EditorView: UIViewControllerRepresentable {
72-
var editorURL: URL?
80+
81+
private let editorURL: URL?
82+
83+
private let configuration: EditorConfiguration
84+
85+
init(editorURL: URL? = nil, configuration: EditorConfiguration) {
86+
self.editorURL = editorURL
87+
self.configuration = configuration
88+
}
7389

7490
func makeUIViewController(context: Context) -> EditorViewController {
75-
let viewController = EditorViewController()
91+
let viewController = EditorViewController(configuration: self.configuration)
7692
viewController.editorURL = editorURL
7793
if #available(iOS 16.4, *) {
7894
viewController.webView.isInspectable = true

ios/Sources/GutenbergKit/Sources/EditorConfiguration.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public struct EditorConfiguration {
2121
public var editorSettings: [String: Any]?
2222
/// The locale to use for translations
2323
public var locale = "en"
24+
public var cookies: [HTTPCookie] = []
2425

2526
public init(title: String = "", content: String = "") {
2627
self.title = title

ios/Sources/GutenbergKit/Sources/EditorViewController.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,12 @@ public final class EditorViewController: UIViewController, GutenbergEditorContro
4141
config.preferences.setValue(true, forKey: "allowFileAccessFromFileURLs")
4242
config.setValue(true, forKey: "allowUniversalAccessFromFileURLs")
4343

44+
// The editor shouldn't try to persist cookies – we want complete control over how they're handled
45+
config.websiteDataStore = WKWebsiteDataStore.nonPersistent()
46+
for cookie in configuration.cookies {
47+
config.websiteDataStore.httpCookieStore.setCookie(cookie)
48+
}
49+
4450
// Set-up communications with the editor.
4551
config.userContentController.add(controller, name: "editorDelegate")
4652

0 commit comments

Comments
 (0)