Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 17 additions & 9 deletions Box42.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,14 @@
DE6332F22A9BCA2C00DCFAF6 /* QuickSlotScriptsLogicController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE6332F12A9BCA2C00DCFAF6 /* QuickSlotScriptsLogicController.swift */; };
DE77BA512A82580400713683 /* MenubarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE77BA502A82580400713683 /* MenubarViewModel.swift */; };
DE77BA562A82637900713683 /* StateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE77BA552A82637900713683 /* StateManager.swift */; };
DE77BBB32A9DED25006CC98B /* WebViewFileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE77BBB22A9DED25006CC98B /* WebViewFileManager.swift */; };
DE77BBBA2A9DEE1B006CC98B /* ExcuteScripts.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE77BBB82A9DEE1B006CC98B /* ExcuteScripts.swift */; };
DE77BBBB2A9DEE1B006CC98B /* ScriptsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE77BBB92A9DEE1B006CC98B /* ScriptsController.swift */; };
DE7886012A9C71BE00FE21DD /* IconsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE7886002A9C71BE00FE21DD /* IconsViewController.swift */; };
DE7886042A9C71CB00FE21DD /* IconsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE7886032A9C71CB00FE21DD /* IconsView.swift */; };
DE78860C2A9C770300FE21DD /* IconsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE78860B2A9C770300FE21DD /* IconsViewModel.swift */; };
DE7886102A9C773300FE21DD /* IconsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE78860F2A9C773300FE21DD /* IconsModel.swift */; };
DE7886172A9CCB3B00FE21DD /* UserProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE7886162A9CCB3B00FE21DD /* UserProfile.swift */; };
DE78861C2A9CE7D700FE21DD /* IconChanged+WebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE78861B2A9CE7D700FE21DD /* IconChanged+WebView.swift */; };
DE7A257A2A6D8CA20043225A /* PreferencesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE7A25792A6D8CA20043225A /* PreferencesViewController.swift */; };
DE7F9D462A9B7A4700F8ACAE /* QuickSlotButtonViewItem.xib in Resources */ = {isa = PBXBuildFile; fileRef = DE7F9D442A9B7A4700F8ACAE /* QuickSlotButtonViewItem.xib */; };
DE874F4E2A591DEA00FC3B77 /* Hotkey.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE874F4D2A591DEA00FC3B77 /* Hotkey.swift */; };
Expand Down Expand Up @@ -160,12 +162,14 @@
DE6332F12A9BCA2C00DCFAF6 /* QuickSlotScriptsLogicController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickSlotScriptsLogicController.swift; sourceTree = "<group>"; };
DE77BA502A82580400713683 /* MenubarViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenubarViewModel.swift; sourceTree = "<group>"; };
DE77BA552A82637900713683 /* StateManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StateManager.swift; sourceTree = "<group>"; };
DE77BBB22A9DED25006CC98B /* WebViewFileManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebViewFileManager.swift; sourceTree = "<group>"; };
DE77BBB82A9DEE1B006CC98B /* ExcuteScripts.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExcuteScripts.swift; sourceTree = "<group>"; };
DE77BBB92A9DEE1B006CC98B /* ScriptsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScriptsController.swift; sourceTree = "<group>"; };
DE7886002A9C71BE00FE21DD /* IconsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconsViewController.swift; sourceTree = "<group>"; };
DE7886032A9C71CB00FE21DD /* IconsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconsView.swift; sourceTree = "<group>"; };
DE78860B2A9C770300FE21DD /* IconsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconsViewModel.swift; sourceTree = "<group>"; };
DE78860F2A9C773300FE21DD /* IconsModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconsModel.swift; sourceTree = "<group>"; };
DE7886162A9CCB3B00FE21DD /* UserProfile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProfile.swift; sourceTree = "<group>"; };
DE78861B2A9CE7D700FE21DD /* IconChanged+WebView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "IconChanged+WebView.swift"; sourceTree = "<group>"; };
DE7A25792A6D8CA20043225A /* PreferencesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreferencesViewController.swift; sourceTree = "<group>"; };
DE7F9D432A9B7A4700F8ACAE /* QuickSlotButtonViewItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuickSlotButtonViewItem.swift; sourceTree = "<group>"; };
DE7F9D442A9B7A4700F8ACAE /* QuickSlotButtonViewItem.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = QuickSlotButtonViewItem.xib; sourceTree = "<group>"; };
Expand Down Expand Up @@ -223,7 +227,6 @@
DE018BB12A5099F900FF0AA3 /* Box42 */ = {
isa = PBXGroup;
children = (
DE7885FF2A9C717E00FE21DD /* Icon */,
DE77BA542A82636500713683 /* Shared */,
DEF749302A85655E00D987C8 /* Extensions */,
DE018C0E2A509C0C00FF0AA3 /* Menubar */,
Expand Down Expand Up @@ -261,6 +264,7 @@
DE018BE92A509B2100FF0AA3 /* WebViewModel.swift */,
DE018BE62A509B1E00FF0AA3 /* WebViewController.swift */,
DE0A91772A8F014F00D1D6F1 /* WebView.swift */,
DE77BBB22A9DED25006CC98B /* WebViewFileManager.swift */,
);
path = WebView;
sourceTree = "<group>";
Expand Down Expand Up @@ -403,20 +407,21 @@
path = Shared;
sourceTree = "<group>";
};
DE7885FD2A9C60C300FE21DD /* Controller */ = {
DE77BBB72A9DEE0B006CC98B /* Controller */ = {
isa = PBXGroup;
children = (
DE0A91972A8F977F00D1D6F1 /* ToolbarViewController.swift */,
DE77BBB82A9DEE1B006CC98B /* ExcuteScripts.swift */,
DE77BBB92A9DEE1B006CC98B /* ScriptsController.swift */,
);
path = Controller;
sourceTree = "<group>";
};
DE7885FF2A9C717E00FE21DD /* Icon */ = {
DE7885FD2A9C60C300FE21DD /* Controller */ = {
isa = PBXGroup;
children = (
DE78861B2A9CE7D700FE21DD /* IconChanged+WebView.swift */,
DE0A91972A8F977F00D1D6F1 /* ToolbarViewController.swift */,
);
path = Icon;
path = Controller;
sourceTree = "<group>";
};
DE7886082A9C741700FE21DD /* View */ = {
Expand Down Expand Up @@ -541,6 +546,7 @@
DEB862D22A8511D600278FCD /* Scripts */ = {
isa = PBXGroup;
children = (
DE77BBB72A9DEE0B006CC98B /* Controller */,
DE78860E2A9C771A00FE21DD /* Model */,
DE78860A2A9C76F600FE21DD /* ViewModel */,
DE7886082A9C741700FE21DD /* View */,
Expand Down Expand Up @@ -702,7 +708,6 @@
DE97CA872A9A7407001073DE /* QuickSlotButtonModel.swift in Sources */,
DE77BA562A82637900713683 /* StateManager.swift in Sources */,
DE1F1A1C2A8B50C500A88DD8 /* BoxBaseContainerViewController.swift in Sources */,
DE78861C2A9CE7D700FE21DD /* IconChanged+WebView.swift in Sources */,
DEE0FA962A9A554F00085A65 /* FunctionButtonUI.swift in Sources */,
DE018BE72A509B1E00FF0AA3 /* WebViewController.swift in Sources */,
DE98E8552A98EA7900F8744A /* WindowButtonUI.swift in Sources */,
Expand All @@ -716,7 +721,9 @@
DE77BA512A82580400713683 /* MenubarViewModel.swift in Sources */,
DE44080C2A924B520091937A /* BoxFunctionViewGroup.swift in Sources */,
DE97CA7C2A9A7199001073DE /* QuickSlotGroupView.swift in Sources */,
DE77BBB32A9DED25006CC98B /* WebViewFileManager.swift in Sources */,
DE018BE42A509B1700FF0AA3 /* CPU.swift in Sources */,
DE77BBBB2A9DEE1B006CC98B /* ScriptsController.swift in Sources */,
DE874F5F2A5935CC00FC3B77 /* String.swift in Sources */,
DE0A91862A8F889F00D1D6F1 /* RefreshPageViaToolbar.swift in Sources */,
DE874F4E2A591DEA00FC3B77 /* Hotkey.swift in Sources */,
Expand All @@ -737,6 +744,7 @@
DE3FF3772A978AB8009C88EF /* WindowMinimizeButton.swift in Sources */,
DE4408022A923EB60091937A /* PinButtonView.swift in Sources */,
DE0A91672A8E6CA700D1D6F1 /* WebViewManager.swift in Sources */,
DE77BBBA2A9DEE1B006CC98B /* ExcuteScripts.swift in Sources */,
DE97CA7F2A9A73A9001073DE /* QuickSlotUI.swift in Sources */,
DE4408152A92750D0091937A /* keyDown+BoxBaseContainerViewController.swift in Sources */,
DE018BED2A509B2600FF0AA3 /* URLModel.swift in Sources */,
Expand Down
27 changes: 0 additions & 27 deletions Box42/Icon/IconChanged+WebView.swift

This file was deleted.

6 changes: 4 additions & 2 deletions Box42/Menubar/MenubarViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class MenubarViewController: NSViewController {
var statusBarVM = StatusBarViewModel()
lazy var eventMonitor: EventMonitor = self.setupEventMonitor()
var boxWindowController: BoxWindowController?

func menubarViewControllerInit() {
self.buttonInit()
}
Expand Down Expand Up @@ -47,7 +47,9 @@ class MenubarViewController: NSViewController {
}

func buttonImageChange(_ img: String) {
self.menubarStopRunning()
statusBarVM.changeStatusBarIcon(img)
self.menubarStartRunning()
}

func buttonActionInit() {
Expand Down Expand Up @@ -122,7 +124,7 @@ extension MenubarViewController: MenubarViewControllerDelegate {
}
window.level = .floating
}
boxWindowController?.showWindow(sender)
boxWindowController?.showWindow(sender)
}
}
}
Expand Down
4 changes: 0 additions & 4 deletions Box42/Preferences/PreferencesViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,6 @@ class PreferencesViewController: NSViewController {

var stackBox: [NSView] = []

let icons = iconModel().icon
icons.forEach { (icon) in
stackBox.append(NSButton(title: "Change \(icon) Icon", target: self, action: #selector(changeIconButtonPressed)))
}

let scripts = Scripts().info
scripts.forEach { (script) in
Expand Down
6 changes: 0 additions & 6 deletions Box42/Toolbar/View/DisplayURL/DisplayURLInToolbar.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import SnapKit
class DisplayURLInToolbar: NSView {
var URLTextfield: DisplayURLTextfield = DisplayURLTextfield()
var originalString: String = ""
var icon = MenubarViewController()

override init(frame frameRect: NSRect) {
super.init(frame: .zero)
Expand Down Expand Up @@ -97,10 +96,5 @@ extension DisplayURLInToolbar {
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
print("Navigation finished")
updateURL()
if originalString == "https://42box.kr/auth" || originalString == "https://42box.kr/" {
WebViewManager.shared.getCookie()
}

IconChangedByWebView(webView)
}
}
48 changes: 37 additions & 11 deletions Box42/WebView/WebView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,35 +7,61 @@

import WebKit

class WebView: WKWebView, WKScriptMessageHandler, WKUIDelegate {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
print("userContentController")
}

class WebView: WKWebView, WKScriptMessageHandler {
var icon = MenubarViewController()

init() {
let preferences = WKPreferences()
preferences.javaScriptEnabled = true
preferences.javaScriptCanOpenWindowsAutomatically = true

let contentController = WKUserContentController()
let configuration = WKWebViewConfiguration()
configuration.preferences = preferences
configuration.userContentController = contentController

super.init(frame: .zero, configuration: configuration)

contentController.add(self, name: "box")


contentController.add(self, name: "download")
contentController.add(self, name: "icon")
contentController.add(self, name: "userProfile")

self.configuration.preferences.javaScriptCanOpenWindowsAutomatically = true
self.configuration.preferences.javaScriptEnabled = true
self.configuration.preferences.setValue(true, forKey: "allowFileAccessFromFileURLs")

self.uiDelegate = self
self.becomeFirstResponder()
}

required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

extension WebView {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
// 스크립트 다운로드
if message.name == "download", let downloadURLString = message.body as? String {
WebViewFileManager.downloadFile(from: downloadURLString)
}
// 아이콘 정보 PUT:
if message.name == "icon", let imgIconString = message.body as? String {
icon.buttonImageChange(imgIconString)
}
// 유저 정보 (Front)GET: https://api.42box.site/user-service/users/me
if message.name == "userProfile", let userProfileString = message.body as? String {
let userProfileJson = userProfileString.data(using: .utf8)

do {
let decoder = JSONDecoder()
let userProfile = try decoder.decode(UserProfile.self, from: userProfileJson!)
print(userProfile)

DispatchQueue.main.sync {
self.icon.buttonImageChange(userProfile.icon)
}
} catch {
print("JSON decoding failed: \(error)")
}
}
}
}
4 changes: 0 additions & 4 deletions Box42/WebView/WebViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,6 @@ class WebViewController: NSViewController {
super.viewDidLoad()
}

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
print(message.name)
}

func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
if let url = navigationAction.request.url {
webView.load(URLRequest(url: url))
Expand Down
63 changes: 0 additions & 63 deletions Box42/WebView/WebViewManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -51,74 +51,11 @@ extension WebViewManager: WKNavigationDelegate {
print("Did start navigation")
}

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
if webView === _getCookieWebKit {
webView.configuration.websiteDataStore.httpCookieStore.getAllCookies { cookies in

let cookieStorage = HTTPCookieStorage.shared

for cookie in cookies {
print("\(cookie.name) = \(cookie.value)")
cookieStorage.setCookie(cookie)
}

var request = URLRequest(url: URL(string: "https://api.42box.site/user-service/users/me")!)
request.httpShouldHandleCookies = true
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
if let error = error {
print("Error: \(error)")
return
}

guard let data = data else {
print("No data received.")
return
}

do {
let userProfile = try JSONDecoder().decode(UserProfile.self, from: data)
print(userProfile)

DispatchQueue.main.sync {
self.icon.menubarStopRunning()
self.icon.buttonImageChange(userProfile.icon)
self.icon.menubarStartRunning()
}

} catch let jsonError {
print("JSON Parsing Error: \(jsonError)")
}
}
task.resume()
}
}
}

func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
print("Did fail navigation with error: \(error.localizedDescription)")
}

func webView(_ webView: WKWebView, didReceiveServerRedirectForProvisionalNavigation navigation: WKNavigation!) {
print("Did receive server redirect")
}

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if let url = navigationAction.request.url, url.absoluteString.contains("https://api.42box.site/user-service/users/me") {
// Handle your own request here and get the response
print(url)
}
decisionHandler(.allow)
}
}

extension WebViewManager: WKScriptMessageHandler {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "didFinishLoading", let messageBody = message.body as? String {
print("Received message from JS: \(messageBody)")
if let url = URL(string: "https://naver.com") {
let request = URLRequest(url: url)
hostingWebView?.load(request)
}
}
}
}