Skip to content

Commit

Permalink
lemme just break main
Browse files Browse the repository at this point in the history
  • Loading branch information
jasonjmcghee committed Dec 30, 2023
1 parent 7997696 commit 1f05406
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 3 deletions.
9 changes: 6 additions & 3 deletions rem.xcodeproj/project.pbxproj
Expand Up @@ -27,7 +27,8 @@
96DBA3182B3E7D3B0000CFBE /* SQLite.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 96E66BC32B2F5745006E1E97 /* SQLite.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
96DBA3362B3F29C40000CFBE /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96DBA3352B3F29C40000CFBE /* main.swift */; };
96DBA33D2B3F2AC30000CFBE /* ffmpeg in Embed Helper Tools */ = {isa = PBXBuildFile; fileRef = 961C960D2B2E73840093F228 /* ffmpeg */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
96DBA3C82B40164E0000CFBE /* Timing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96DBA3C72B40164E0000CFBE /* Timing.swift */; };
96DBA3C82B40164E0000CFBE /* (null) in Sources */ = {isa = PBXBuildFile; };
96DBA3E72B403ED90000CFBE /* Timings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96DBA3E62B403ED90000CFBE /* Timings.swift */; };
96F062182B35111D00695621 /* Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96F062172B35111D00695621 /* Search.swift */; };
/* End PBXBuildFile section */

Expand Down Expand Up @@ -213,6 +214,7 @@
96DBA3332B3F29C40000CFBE /* ffmpegX */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ffmpegX; sourceTree = BUILT_PRODUCTS_DIR; };
96DBA3352B3F29C40000CFBE /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = "<group>"; };
96DBA33E2B3F2AFF0000CFBE /* ffmpegX.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ffmpegX.entitlements; sourceTree = "<group>"; };
96DBA3E62B403ED90000CFBE /* Timings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Timings.swift; sourceTree = "<group>"; };
96E66BB42B2F5745006E1E97 /* SQLite.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SQLite.xcodeproj; path = ./SQLite.swift/SQLite.xcodeproj; sourceTree = "<group>"; };
96E66BCC2B2F574D006E1E97 /* SQLite.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SQLite.xcodeproj; path = ./SQLite.swift/SQLite.xcodeproj; sourceTree = "<group>"; };
96F062172B35111D00695621 /* Search.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Search.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -281,7 +283,6 @@
isa = PBXGroup;
children = (
969F3F092B3B7F760085787B /* Info.plist */,
96DBA3C72B40164E0000CFBE /* Timing.swift */,
961C96122B2EB7DB0093F228 /* TimelineView.swift */,
961C95D92B2E19B30093F228 /* remApp.swift */,
961C95DB2B2E19B30093F228 /* ContentView.swift */,
Expand All @@ -296,6 +297,7 @@
969F3F0A2B3CB2110085787B /* Field.swift */,
969F3F0C2B3CCEC30085787B /* Ask.swift */,
969BA2EB2B3D1D46009EE9C6 /* SettingsManager.swift */,
96DBA3E62B403ED90000CFBE /* Timings.swift */,
);
path = rem;
sourceTree = "<group>";
Expand Down Expand Up @@ -654,13 +656,14 @@
96B0DA3A2B3A08280030E8AE /* TextMerger.swift in Sources */,
96F062182B35111D00695621 /* Search.swift in Sources */,
961C96132B2EB7DB0093F228 /* TimelineView.swift in Sources */,
96DBA3C82B40164E0000CFBE /* Timing.swift in Sources */,
96DBA3C82B40164E0000CFBE /* (null) in Sources */,
969F3F082B3B7C7C0085787B /* RemFileManager.swift in Sources */,
961C95DA2B2E19B30093F228 /* remApp.swift in Sources */,
96B0DA382B3A02530030E8AE /* ClipboardManager.swift in Sources */,
969F3F0B2B3CB2110085787B /* Field.swift in Sources */,
969BA2EC2B3D1D46009EE9C6 /* SettingsManager.swift in Sources */,
969F3F0D2B3CCEC30085787B /* Ask.swift in Sources */,
96DBA3E72B403ED90000CFBE /* Timings.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down
56 changes: 56 additions & 0 deletions rem/Timings.swift
@@ -0,0 +1,56 @@
//
// Timings.swift
// rem
//
// Created by Jason McGhee on 12/30/23.
//

import Foundation

class Debouncer {
private var lastFireTime: DispatchTime = .now()
private var delay: TimeInterval
private var workItem: DispatchWorkItem?

init(delay: TimeInterval) {
self.delay = delay
}

func debounce(action: @escaping () -> Void) {
workItem?.cancel()
workItem = DispatchWorkItem { action() }
let deadline = lastFireTime + delay
DispatchQueue.main.asyncAfter(deadline: deadline, execute: workItem!)
lastFireTime = deadline
}
}

class Throttler {
private var lastExecution: Date = Date.distantPast
private let delay: TimeInterval
private var workItem: DispatchWorkItem?
private let queue: DispatchQueue

init(delay: TimeInterval, queue: DispatchQueue = DispatchQueue.main) {
self.delay = delay
self.queue = queue
}

func throttle(_ block: @escaping () -> Void) {
workItem?.cancel()

let now = Date()
let deadline = lastExecution.addingTimeInterval(delay)
if now >= deadline {
lastExecution = now
block()
} else {
workItem = DispatchWorkItem {
self.lastExecution = Date()
block()
}
let dispatchDelay = DispatchTimeInterval.milliseconds(Int((deadline.timeIntervalSince(now)) * 1000))
queue.asyncAfter(deadline: .now() + dispatchDelay, execute: workItem!)
}
}
}

0 comments on commit 1f05406

Please sign in to comment.