(modelName: string, preferredQuantization?: string)
| 82 | }, [onComplete]); |
| 83 | |
| 84 | const downloadModel = async (modelName: string, preferredQuantization?: string) => { |
| 85 | setDownloads((prev) => { |
| 86 | const newMap = new Map(prev); |
| 87 | newMap.set(modelName, { |
| 88 | status: 'starting', |
| 89 | percentage: 0, |
| 90 | isDownloading: true, |
| 91 | error: null, |
| 92 | downloadedBytes: 0, |
| 93 | totalBytes: 0, |
| 94 | speedMbps: 0, |
| 95 | }); |
| 96 | return newMap; |
| 97 | }); |
| 98 | |
| 99 | try { |
| 100 | await pullModel(modelName, preferredQuantization); |
| 101 | } catch (err) { |
| 102 | const errorMessage = err instanceof Error ? err.message : 'Download failed'; |
| 103 | setDownloads((prev) => { |
| 104 | const newMap = new Map(prev); |
| 105 | newMap.set(modelName, { |
| 106 | status: 'error', |
| 107 | percentage: 0, |
| 108 | isDownloading: false, |
| 109 | error: errorMessage, |
| 110 | downloadedBytes: 0, |
| 111 | totalBytes: 0, |
| 112 | speedMbps: 0, |
| 113 | }); |
| 114 | return newMap; |
| 115 | }); |
| 116 | } |
| 117 | }; |
| 118 | |
| 119 | return { |
| 120 | downloads, |
nothing calls this directly
no test coverage detected