Skip to content

Commit dc5e1bf

Browse files
authored
Merge pull request #150 from Edge0-AI/release/ios-documents-models
fix(ios): load models copied in through the Files app
2 parents 7a203f2 + bf267d4 commit dc5e1bf

1 file changed

Lines changed: 14 additions & 1 deletion

File tree

‎ios/Edge0PhoneProbe/ContentView.swift‎

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,10 @@ private final class ChatViewModel: ObservableObject {
124124
}
125125

126126
func isInstalled(_ model: LocalModel) -> Bool {
127-
let url = resolveModelURL(model)
127+
modelIsComplete(model, at: resolveModelURL(model))
128+
}
129+
130+
private func modelIsComplete(_ model: LocalModel, at url: URL) -> Bool {
128131
switch model {
129132
case .edge8:
130133
return FileManager.default.fileExists(
@@ -267,7 +270,17 @@ private final class ChatViewModel: ObservableObject {
267270
Task { await runtime.reset() }
268271
}
269272

273+
/// Sideload releases ship without weights. File Sharing exposes Documents, so a
274+
/// copied model there wins; a model baked into the bundle remains the fallback.
270275
private func resolveModelURL(_ model: LocalModel) -> URL {
276+
if let documents = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
277+
let nested = documents
278+
.appendingPathComponent("Models", isDirectory: true)
279+
.appendingPathComponent(model.folderName, isDirectory: true)
280+
if modelIsComplete(model, at: nested) { return nested }
281+
let direct = documents.appendingPathComponent(model.folderName, isDirectory: true)
282+
if modelIsComplete(model, at: direct) { return direct }
283+
}
271284
let models = Bundle.main.resourceURL?
272285
.appendingPathComponent("Models", isDirectory: true)
273286
?? Bundle.main.bundleURL.appendingPathComponent("Models", isDirectory: true)

0 commit comments

Comments
 (0)