Skip to content

Commit

Permalink
- Fixes git history viewer
Browse files Browse the repository at this point in the history
- Fixes fsnotes:// router #1439
  • Loading branch information
glushchenko committed Jan 8, 2023
1 parent f0fd18f commit 6c4194f
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 35 deletions.
7 changes: 6 additions & 1 deletion FSNotes/AppDelegate+URLRoutes.swift
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,12 @@ extension AppDelegate {
var lastPath = url.lastPathComponent

if let wikiURL = url["id"] {
if let note = Storage.sharedInstance().getBy(title: wikiURL) {
var note = Storage.sharedInstance().getBy(fileName: wikiURL)
if note == nil {
note = Storage.sharedInstance().getBy(title: wikiURL)
}

if let note = note {
vc.cleanSearchAndEditArea(shouldBecomeFirstResponder: false, completion: { () -> Void in
vc.notesTableView.selectRowAndSidebarItem(note: note)
NSApp.mainWindow?.makeFirstResponder(vc.editor)
Expand Down
5 changes: 5 additions & 0 deletions FSNotes/Business/Project+Git.swift
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,11 @@ extension Project {

public func pull() throws {
guard let repository = try getRepository() else { return }

if let origin = getGitOrigin() {
repository.addRemoteOrigin(path: origin)
}

let repositoryProject = getRepositoryProject()

if !UserDefaultsManagement.separateRepo || isCloudProject() {
Expand Down
2 changes: 1 addition & 1 deletion FSNotes/EditorViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -536,7 +536,7 @@ class EditorViewController: NSViewController, NSTextViewDelegate, WebFrameLoadDe

noteDupe.save()

Storage.shared().add(noteDupe)
Storage.sharedInstance().add(noteDupe)
ViewController.shared()?.notesTableView.insertNew(note: noteDupe)
}
}
Expand Down
69 changes: 37 additions & 32 deletions FSNotes/Git/revision/FileHistoryIterator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public class FileHistoryIterator : RevisionIterator {
guard let oid = super.next() else {
return nil
}

lastFetchedOid = oid

do {
Expand All @@ -69,53 +69,58 @@ public class FileHistoryIterator : RevisionIterator {
// Find current entry
let entry = try tree.entry(byPath: path)
if (entry == nil) {
previousOid = oid
return next();
return diffPrev(tree: tree, oid: oid)
}

// Test previous
if (previousOid == nil) {
previousOid = oid

return next()
} else {
return diffPrev(tree: tree, oid: oid)
}

} catch {
NSLog("Unable to find next OID \(error)")
}

return nil
}

private func diffPrev(tree: Tree, oid: OID) -> OID? {
guard let pOid = previousOid else { return next() }

do {
// Find commit
let previousCommit = try repository.commitLookup(oid: pOid)

// Find parent entry
let previousTree = try previousCommit.tree()

// Find diff
let diff = try previousTree.diff(other: tree)

// Find
if diff.find(byPath: path) == nil {

// Set previous and find next
previousOid = oid

return next()

} else {

// Find commit
let previousCommit = try repository.commitLookup(oid: previousOid!)
// Save previousOid
let validOid = previousOid

// Find parent entry
let previousTree = try previousCommit.tree()

// Find diff
let diff = try previousTree.diff(other: tree)
// Set previousOid
previousOid = oid

// Find
if diff.find(byPath: path) == nil {

// Set previous and find next
previousOid = oid

return next()
} else {

// Save previousOid
let validOid = previousOid

// Set previousOid
previousOid = oid

return validOid;
}
return validOid;
}

} catch {
NSLog("Unable to find next OID \(error)")
return nil
}

return nil
}

public func getLast() -> OID? {
Expand Down
8 changes: 7 additions & 1 deletion FSNotes/Preferences/PreferencesGitViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,8 @@ class PreferencesGitViewController: NSViewController {
project?.saveSettings()

UserDefaultsManagement.gitOrigin = sender.stringValue

ViewController.shared()?.gitQueue.cancelAllOperations()
}

@IBAction func username(_ sender: NSTextField) {
Expand Down Expand Up @@ -191,6 +193,8 @@ class PreferencesGitViewController: NSViewController {
}

@IBAction func pullInterval(_ sender: NSTextField) {
ViewController.shared()?.gitQueue.cancelAllOperations()

if var interval = Int(sender.stringValue) {
if interval < 10 {
interval = 10
Expand All @@ -213,9 +217,11 @@ class PreferencesGitViewController: NSViewController {
}

@IBAction func clonePull(_ sender: Any) {
guard let project = Storage.shared().getDefault() else { return }
guard let project = Storage.sharedInstance().getDefault() else { return }
guard let window = view.window else { return }

ViewController.shared()?.gitQueue.cancelAllOperations()

let origin = self.origin.stringValue
project.gitOrigin = origin
project.saveSettings()
Expand Down

0 comments on commit 6c4194f

Please sign in to comment.