Skip to content

Commit

Permalink
use fileImporter
Browse files Browse the repository at this point in the history
  • Loading branch information
guanlisheng committed Sep 16, 2024
1 parent 8f6536c commit 7ad0404
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 83 deletions.
4 changes: 0 additions & 4 deletions MMEX.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
A3C1422F2C89751600D3CEC0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A3C1422E2C89751600D3CEC0 /* Assets.xcassets */; };
A3C142322C89751600D3CEC0 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A3C142312C89751600D3CEC0 /* Preview Assets.xcassets */; };
A3C1423A2C89754C00D3CEC0 /* SQLite in Frameworks */ = {isa = PBXBuildFile; productRef = A3C142392C89754C00D3CEC0 /* SQLite */; };
A3C1423C2C89758C00D3CEC0 /* DocumentPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3C1423B2C89758C00D3CEC0 /* DocumentPicker.swift */; };
A3C1423E2C89760600D3CEC0 /* AccountListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3C1423D2C89760600D3CEC0 /* AccountListView.swift */; };
A3C142442C89C8FA00D3CEC0 /* Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3C142432C89C8FA00D3CEC0 /* Account.swift */; };
A3C142472C89CB4200D3CEC0 /* AccountDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3C142462C89CB4200D3CEC0 /* AccountDetailView.swift */; };
Expand Down Expand Up @@ -66,7 +65,6 @@
A3C1422C2C89751500D3CEC0 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
A3C1422E2C89751600D3CEC0 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
A3C142312C89751600D3CEC0 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
A3C1423B2C89758C00D3CEC0 /* DocumentPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DocumentPicker.swift; sourceTree = "<group>"; };
A3C1423D2C89760600D3CEC0 /* AccountListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountListView.swift; sourceTree = "<group>"; };
A3C142412C897BE600D3CEC0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
A3C142432C89C8FA00D3CEC0 /* Account.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Account.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -153,7 +151,6 @@
A3C142412C897BE600D3CEC0 /* Info.plist */,
A3C1422A2C89751500D3CEC0 /* MMEXApp.swift */,
A3C1422C2C89751500D3CEC0 /* ContentView.swift */,
A3C1423B2C89758C00D3CEC0 /* DocumentPicker.swift */,
A3C1425E2C8DE70300D3CEC0 /* DatabaseManager.swift */,
A3C142912C8FE11700D3CEC0 /* AccountRepository.swift */,
A3C142932C8FE13E00D3CEC0 /* PayeeRepository.swift */,
Expand Down Expand Up @@ -305,7 +302,6 @@
A3C142AC2C909C1C00D3CEC0 /* TransactionEditView.swift in Sources */,
A3C142962C8FE15E00D3CEC0 /* TransactionRepository.swift in Sources */,
A3C1422D2C89751500D3CEC0 /* ContentView.swift in Sources */,
A3C1423C2C89758C00D3CEC0 /* DocumentPicker.swift in Sources */,
A3C142AA2C90721800D3CEC0 /* TransactionListView2.swift in Sources */,
A3C142A62C90417700D3CEC0 /* TransactionAddView2.swift in Sources */,
A3C142472C89CB4200D3CEC0 /* AccountDetailView.swift in Sources */,
Expand Down
48 changes: 30 additions & 18 deletions MMEX/ContentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ struct ContentView: View {
@State private var isPresentingTransactionAddView = false

init() {
// Load the stored file URL on app start
// if let savedURL = UserDefaults.standard.url(forKey: "selectedFileURL") {
// _selectedFileURL = State(initialValue: savedURL)
//}
// Load the stored file URL on app start
// if let savedURL = UserDefaults.standard.url(forKey: "selectedFileURL") {
// _selectedFileURL = State(initialValue: savedURL)
// }
}

var body: some View {
Expand Down Expand Up @@ -103,22 +103,34 @@ struct ContentView: View {
}
}
}
.sheet(isPresented: $isDocumentPickerPresented, onDismiss: {
// Navigate back to the landing page after selecting the new database
if selectedFileURL != nil {
// Delay before switching back to tag(0) to ensure data is loaded
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
selectedTab = 0 // Navigate back to the first tab
.fileImporter(
isPresented: $isDocumentPickerPresented, // Toggle state for presentation
allowedContentTypes: [.item], // Allowed types, you can customize it
allowsMultipleSelection: false // Single file selection
) { result in
switch result {
case .success(let urls):
if let selectedURL = urls.first {
// Handle security-scoped resource access
if selectedURL.startAccessingSecurityScopedResource() {
selectedFileURL = selectedURL

// Save the file path for later access
UserDefaults.standard.set(selectedURL.path, forKey: "SelectedFilePath")

selectedURL.stopAccessingSecurityScopedResource() // Stop when done
} else {
print("Unable to access file at URL: \(selectedURL)")
}

// Navigate back to the first tab with delay to ensure data is loaded
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
selectedTab = 0
}
}
case .failure(let error):
print("Failed to pick a document: \(error.localizedDescription)")
}
}) {
DocumentPicker(selectedFileURL: $selectedFileURL)
}
.onChange(of: selectedFileURL) { newURL in
// Save the selected file URL to UserDefaults when it's set
if let url = newURL {
UserDefaults.standard.set(url.absoluteString, forKey: "selectedFileURL")
}
}
}
}
Expand Down
61 changes: 0 additions & 61 deletions MMEX/DocumentPicker.swift

This file was deleted.

0 comments on commit 7ad0404

Please sign in to comment.