Skip to content

Commit fb0848d

Browse files
committed
Released version v0.1.0
1 parent d0b2d2b commit fb0848d

20 files changed

Lines changed: 108 additions & 194 deletions

File tree

native/app/Podfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@ target 'eqMac' do
1010
use_frameworks!
1111

1212
# Pods for eqMac
13+
pod 'Alamofire', '~> 5.1'
1314
pod 'AudioKit', '4.9.5'
1415
pod 'AMCoreAudio', '~> 3.3.1'
1516
pod 'Criollo', '~> 0.5’
1617
pod 'WebViewJavascriptBridge', '~> 6.0'
17-
pod 'ReachabilitySwift'
18+
# pod 'ReachabilitySwift'
1819
pod 'ReSwift'
1920
pod 'SwiftLint'
2021
pod 'Sparkle'

native/app/Podfile.lock

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
PODS:
2+
- Alamofire (5.1.0)
23
- AMCoreAudio (3.3.1)
34
- AudioKit (4.9.5):
45
- AudioKit/Core (= 4.9.5)
@@ -11,7 +12,6 @@ PODS:
1112
- CocoaAsyncSocket (~> 7.6)
1213
- EmitterKit (5.2.2)
1314
- KeychainSwift (13.0.0)
14-
- ReachabilitySwift (5.0.0)
1515
- ReSwift (5.0.0)
1616
- Sentry (4.5.0):
1717
- Sentry/Core (= 4.5.0)
@@ -25,12 +25,12 @@ PODS:
2525
- Zip (1.1.0)
2626

2727
DEPENDENCIES:
28+
- Alamofire (~> 5.1)
2829
- AMCoreAudio (~> 3.3.1)
2930
- AudioKit (= 4.9.5)
3031
- Criollo (~> 0.5)
3132
- EmitterKit (~> 5.2)
3233
- KeychainSwift (~> 13.0)
33-
- ReachabilitySwift
3434
- ReSwift
3535
- Sentry (~> 4.1)
3636
- Sparkle
@@ -43,13 +43,13 @@ DEPENDENCIES:
4343

4444
SPEC REPOS:
4545
https://github.com/CocoaPods/Specs.git:
46+
- Alamofire
4647
- AMCoreAudio
4748
- AudioKit
4849
- CocoaAsyncSocket
4950
- Criollo
5051
- EmitterKit
5152
- KeychainSwift
52-
- ReachabilitySwift
5353
- ReSwift
5454
- Sentry
5555
- Sparkle
@@ -70,13 +70,13 @@ CHECKOUT OPTIONS:
7070
:git: https://github.com/sveinbjornt/STPrivilegedTask.git
7171

7272
SPEC CHECKSUMS:
73+
Alamofire: 9d5c5f602928e512395b30950c5984eca840093c
7374
AMCoreAudio: 6bf97d548d02ebb75b56c1cbf6b1f87bcfdeb748
7475
AudioKit: ccf4e39c89ed6e5cbbce5fef58d819db39446437
7576
CocoaAsyncSocket: 694058e7c0ed05a9e217d1b3c7ded962f4180845
7677
Criollo: 617173837c296ca4248b0b058f36ce9b91e5c25b
7778
EmitterKit: e7a27b37118823d8ad413b8396f75e40d59f8cba
7879
KeychainSwift: 23d6c16cbc33f20fafa30c3d783241b4b87d998c
79-
ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
8080
ReSwift: 628f1a9b3ee52e3b3ca2a644435472fd77afafe1
8181
Sentry: ab6c209f23700d1460691dbc90e19ed0a05d496b
8282
Sparkle: 55b1a87ba69d56913375a281546b7c82dec95bb0
@@ -87,6 +87,6 @@ SPEC CHECKSUMS:
8787
WebViewJavascriptBridge: 7f5bc4d3581e672e8f32bd0f812d54bc69bb8e29
8888
Zip: 8877eede3dda76bcac281225c20e71c25270774c
8989

90-
PODFILE CHECKSUM: 6043037b95ad7c53075805e0e6669ba3a90c9e1a
90+
PODFILE CHECKSUM: 836a73136dad67ecb345dbd4aa7ad7b1bc4253e2
9191

9292
COCOAPODS: 1.9.1

native/app/Source/Application.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ class Application {
9797
// Create a Sentry client and start crash handler
9898
do {
9999
Client.shared = try Client(dsn: Constants.SENTRY_ENDPOINT)
100+
Client.shared?.sampleRate = 0.1
100101
try Client.shared?.startCrashHandler()
101102
} catch let error {
102103
Console.log("\(error)")
@@ -423,10 +424,10 @@ class Application {
423424
}
424425

425426
static func uninstall (_ completion: @escaping (Bool) -> Void) {
426-
stopListeners()
427-
stopEngines()
428-
switchBackToLastKnownDevice()
429427
Driver.uninstall(started: {
428+
self.stopListeners()
429+
self.stopEngines()
430+
self.switchBackToLastKnownDevice()
430431
UI.hide()
431432
Utilities.delay(100) { UI.showLoadingWindow("Uninstalling eqMac") }
432433
}) { success in

native/app/Source/ApplicationDataBus.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,16 @@ class ApplicationDataBus: DataBus {
3737
return "Bug Report Openned"
3838
}
3939

40+
self.on(.POST, "/open-url") { data, _ in
41+
if let urlString = data["url"] as? String {
42+
if let url = URL(string: urlString) {
43+
NSWorkspace.shared.open(url)
44+
return "Openned"
45+
}
46+
}
47+
throw "Invalid URL"
48+
}
49+
4050
self.on(.GET, "/haptic") { _, _ in
4151
NSHapticFeedbackManager.defaultPerformer.perform(NSHapticFeedbackManager.FeedbackPattern.alignment, performanceTime: NSHapticFeedbackManager.PerformanceTime.now)
4252
return "Haptic feedback performed"

native/app/Source/Constants.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ import AMCoreAudio
1313
struct Constants {
1414

1515
#if DEBUG
16-
static let UI_ENDPOINT_URL = URL(string: "http://localhost:4200")!
17-
// static let UI_ENDPOINT_URL = URL(string: "https://ui-v0.eqmac.app")!
16+
// static let UI_ENDPOINT_URL = URL(string: "http://localhost:4200")!
17+
static let UI_ENDPOINT_URL = URL(string: "https://ui-v0.eqmac.app")!
1818
static let DEBUG = true
1919
#else
2020
static let DEBUG = false

native/app/Source/UI/UI.swift

Lines changed: 27 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import WebKit
1515
import Zip
1616
//import Swifter
1717
import Criollo
18-
import Reachability
18+
import Alamofire
1919

2020
enum UIMode: String, DefaultsSerializable {
2121
case window = "window"
@@ -186,51 +186,38 @@ class UI: StoreSubscriber {
186186
}
187187

188188
private func load () {
189-
let reachability = try! Reachability(hostname: Constants.UI_ENDPOINT_URL.absoluteString)
190-
191-
reachability.whenReachable = { _ in
192-
Console.log("Remote UI reachable, loading: \(Constants.UI_ENDPOINT_URL)")
193-
self.loadRemote()
194-
reachability.stopNotifier()
195-
}
196-
197-
reachability.whenUnreachable = { _ in
198-
Console.log("Remote UI unreachable, loading local")
199-
self.loadLocal()
200-
reachability.stopNotifier()
201-
}
202-
203-
do {
204-
try reachability.startNotifier()
205-
} catch {
206-
self.loadLocal()
207-
}
208-
}
209-
210-
private func loadRemote () {
211189
UI.viewController.load(Constants.UI_ENDPOINT_URL, { success in
212-
if !success {
213-
self.loadLocal()
214-
} else {
215-
Console.log("Remote UI loaded")
216-
self.cacheRemoteUI()
217-
}
218-
})
219-
}
220-
221-
private func loadLocal () {
222-
let port = UI.startLocalServer()
223-
let url = URL(string: "http://localhost:\(port)/index.html")!
224-
UI.viewController.load(url, { success in
225190
if success {
226-
Console.log("Local UI loaded")
191+
Console.log("Remote UI loaded")
192+
self.cacheRemote()
227193
} else {
228-
Console.log("Local UI failed to Load")
194+
let port = UI.startLocalServer()
195+
let url = URL(string: "http://localhost:\(port)/index.html")!
196+
UI.viewController.load(url, { success in
197+
if success {
198+
Console.log("Local UI loaded")
199+
} else {
200+
Console.log("Local UI failed to Load")
201+
}
202+
})
229203
}
230204
})
231205
}
232206

233-
private func cacheRemoteUI () {
234-
207+
private func cacheRemote () {
208+
// Only download ui.zip when UI endpoint is remote
209+
if Constants.UI_ENDPOINT_URL.absoluteString.contains(Constants.DOMAIN) {
210+
let destination: DownloadRequest.Destination = { _, _ in
211+
let fileURL = Application.supportPath.appendingPathComponent("ui.zip", isDirectory: false)
212+
return (fileURL, [.removePreviousFile, .createIntermediateDirectories])
213+
}
214+
AF.download("\(Constants.UI_ENDPOINT_URL)/ui.zip", to: destination).response { resp in
215+
if resp.error == nil {
216+
Console.log("Remote UI cached successfuly")
217+
} else {
218+
Console.log("Failed to cache Remote UI. Error: ", resp.error as Any)
219+
}
220+
}
221+
}
235222
}
236223
}

native/app/Source/UI/ViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ class ViewController: NSViewController, WKNavigationDelegate {
4949
var tryingToLoad = false
5050
var loadFinished = Event<Bool>()
5151
func load (_ url: URL, _ callback: ((Bool) -> Void)? = nil) {
52-
let request = URLRequest(url: url)
52+
let request = URLRequest(url: url, cachePolicy: .reloadIgnoringLocalAndRemoteCacheData)
5353

5454
if callback != nil {
5555
tryingToLoad = true

native/app/Supporting Files/Info.plist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717
<key>CFBundlePackageType</key>
1818
<string>APPL</string>
1919
<key>CFBundleShortVersionString</key>
20-
<string>v0.0.1</string>
20+
<string>$(MARKETING_VERSION)</string>
2121
<key>CFBundleVersion</key>
22-
<string>0.0.1</string>
22+
<string>$(CURRENT_PROJECT_VERSION)</string>
2323
<key>LSApplicationCategoryType</key>
2424
<string>public.app-category.music</string>
2525
<key>LSMinimumSystemVersion</key>

native/app/eqMac.xcodeproj/project.pbxproj

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -606,7 +606,6 @@
606606
E0DD0A9E20E95B8D00B14020 /* Run Script - SwiftLint */,
607607
E057A635226F9F710019D13C /* Run Script - Kill eqMac (DEBUG) */,
608608
E0F4FD9A22888AC300BEB0A6 /* Run Script - LaunchAtLogin copy-helper */,
609-
E0D46F8C23C50C840067F83C /* Run Script - Package */,
610609
E021BD0422318630004921FF /* CopyFiles */,
611610
E0A48D6223C6028F00700C39 /* Run Script - Hardruntime + Sign Sparkle */,
612611
E0A48D6323C61CC200700C39 /* Run Script - Hardruntime + Sign LaunchAtLogin */,
@@ -688,12 +687,12 @@
688687
inputPaths = (
689688
"${PODS_ROOT}/Target Support Files/Pods-eqMac/Pods-eqMac-frameworks.sh",
690689
"${BUILT_PRODUCTS_DIR}/AMCoreAudio/AMCoreAudio.framework",
690+
"${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework",
691691
"${BUILT_PRODUCTS_DIR}/CocoaAsyncSocket/CocoaAsyncSocket.framework",
692692
"${BUILT_PRODUCTS_DIR}/Criollo/Criollo.framework",
693693
"${BUILT_PRODUCTS_DIR}/EmitterKit/EmitterKit.framework",
694694
"${BUILT_PRODUCTS_DIR}/KeychainSwift/KeychainSwift.framework",
695695
"${BUILT_PRODUCTS_DIR}/ReSwift/ReSwift.framework",
696-
"${BUILT_PRODUCTS_DIR}/ReachabilitySwift/Reachability.framework",
697696
"${BUILT_PRODUCTS_DIR}/STPrivilegedTask/STPrivilegedTask.framework",
698697
"${BUILT_PRODUCTS_DIR}/Sentry/Sentry.framework",
699698
"${PODS_ROOT}/Sparkle/Sparkle.framework",
@@ -706,12 +705,12 @@
706705
name = "[CP] Embed Pods Frameworks";
707706
outputPaths = (
708707
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AMCoreAudio.framework",
708+
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework",
709709
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CocoaAsyncSocket.framework",
710710
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Criollo.framework",
711711
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/EmitterKit.framework",
712712
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/KeychainSwift.framework",
713713
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReSwift.framework",
714-
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Reachability.framework",
715714
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/STPrivilegedTask.framework",
716715
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sentry.framework",
717716
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sparkle.framework",
@@ -800,20 +799,6 @@
800799
shellPath = /bin/sh;
801800
shellScript = "\nLOCATION=\"$BUILT_PRODUCTS_DIR/$CONTENTS_FOLDER_PATH/Library/LoginItems/LaunchAtLoginHelper.app\"\n\n# By default, use the configured code signing identity for the project/target\nIDENTITY=\"${CODE_SIGN_IDENTITY}\"\nif [ \"$IDENTITY\" == \"\" ]\nthen\n# If a code signing identity is not specified, use ad hoc signing\nIDENTITY=\"-\"\nfi\necho \"Hardening Launch At Login Helper with developer identity \\\"$IDENTITY\\\"...\"\ncodesign --verbose --force --deep -o runtime --sign \"$IDENTITY\" \"$LOCATION\"\n";
802801
};
803-
E0D46F8C23C50C840067F83C /* Run Script - Package */ = {
804-
isa = PBXShellScriptBuildPhase;
805-
buildActionMask = 2147483647;
806-
files = (
807-
);
808-
inputPaths = (
809-
);
810-
name = "Run Script - Package";
811-
outputPaths = (
812-
);
813-
runOnlyForDeploymentPostprocessing = 0;
814-
shellPath = /bin/sh;
815-
shellScript = "if [[ $EQMAC_BUILD_ENV != \"Package\" ]]; then exit; fi # Run only on Package\n\n#envs\nBUILD_DIR=\"$PROJECT_DIR/../build\"\nDMG_PATH_WILDCARD=\"$BUILD_DIR/eqMac*.dmg\"\nUPDATE_DIR=\"$PROJECT_DIR/update\"\nrm $DMG_PATH_WILDCARD || true #Remove old DMG files\n\n# Create new DMG\nnpx create-dmg \"$BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME\" --overwrite --dmg-title=eqMac $BUILD_DIR\nmv -v $DMG_PATH_WILDCARD \"$UPDATE_DIR/eqMac.dmg\" # Move it to update dir\n\n# Generate Changelog HTML\nnpx showdown makehtml -i \"$UPDATE_DIR/CHANGELOG.md\" -o \"$UPDATE_DIR/eqMac.html\"\n\n# Generate Appcast XML\n\"$UPDATE_DIR/generate_appcast\" \"$UPDATE_DIR\"\n\n";
816-
};
817802
E0DD0A9E20E95B8D00B14020 /* Run Script - SwiftLint */ = {
818803
isa = PBXShellScriptBuildPhase;
819804
buildActionMask = 2147483647;
@@ -1074,12 +1059,13 @@
10741059
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
10751060
CLANG_MODULES_AUTOLINK = NO;
10761061
CODE_SIGN_ENTITLEMENTS = eqMac.entitlements;
1077-
CODE_SIGN_IDENTITY = "-";
1062+
CODE_SIGN_IDENTITY = "Developer ID Application";
10781063
CODE_SIGN_STYLE = Manual;
10791064
COMBINE_HIDPI_IMAGES = YES;
1065+
CURRENT_PROJECT_VERSION = 0.1.0;
10801066
DEFINES_MODULE = YES;
1081-
DEVELOPMENT_TEAM = "";
1082-
ENABLE_HARDENED_RUNTIME = NO;
1067+
DEVELOPMENT_TEAM = JZA6C97KJA;
1068+
ENABLE_HARDENED_RUNTIME = YES;
10831069
FRAMEWORK_SEARCH_PATHS = (
10841070
"$(inherited)",
10851071
"$(PROJECT_DIR)",
@@ -1112,6 +1098,7 @@
11121098
"$(PROJECT_DIR)/Source/Vendor",
11131099
);
11141100
MACOSX_DEPLOYMENT_TARGET = 10.12;
1101+
MARKETING_VERSION = v0.1.0;
11151102
PRODUCT_BUNDLE_IDENTIFIER = com.bitgapp.eqmac;
11161103
PRODUCT_NAME = "$(TARGET_NAME)";
11171104
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -1135,6 +1122,7 @@
11351122
CODE_SIGN_IDENTITY = "Developer ID Application";
11361123
CODE_SIGN_STYLE = Manual;
11371124
COMBINE_HIDPI_IMAGES = YES;
1125+
CURRENT_PROJECT_VERSION = 0.1.0;
11381126
DEFINES_MODULE = YES;
11391127
DEVELOPMENT_TEAM = JZA6C97KJA;
11401128
ENABLE_HARDENED_RUNTIME = YES;
@@ -1170,6 +1158,7 @@
11701158
"$(PROJECT_DIR)/Source/Vendor",
11711159
);
11721160
MACOSX_DEPLOYMENT_TARGET = 10.12;
1161+
MARKETING_VERSION = v0.1.0;
11731162
PRODUCT_BUNDLE_IDENTIFIER = com.bitgapp.eqmac;
11741163
PRODUCT_NAME = "$(TARGET_NAME)";
11751164
PROVISIONING_PROFILE_SPECIFIER = "";

0 commit comments

Comments
 (0)