( addItem: (item: Omit<HistoryItem, 'id'>, timestamp: number) => void, setUpdateInfo: (info: UpdateObject | null) => void, )
| 187 | } |
| 188 | |
| 189 | export function setUpdateHandler( |
| 190 | addItem: (item: Omit<HistoryItem, 'id'>, timestamp: number) => void, |
| 191 | setUpdateInfo: (info: UpdateObject | null) => void, |
| 192 | ) { |
| 193 | let successfullyInstalled = false; |
| 194 | const handleUpdateReceived = (info: UpdateObject) => { |
| 195 | setUpdateInfo(info); |
| 196 | const savedMessage = info.message; |
| 197 | setTimeout(() => { |
| 198 | if (!successfullyInstalled) { |
| 199 | addItem( |
| 200 | { |
| 201 | type: MessageType.INFO, |
| 202 | text: savedMessage, |
| 203 | }, |
| 204 | Date.now(), |
| 205 | ); |
| 206 | } |
| 207 | setUpdateInfo(null); |
| 208 | }, 60000); |
| 209 | }; |
| 210 | |
| 211 | const handleUpdateFailed = (data?: { message: string }) => { |
| 212 | setUpdateInfo(null); |
| 213 | addItem( |
| 214 | { |
| 215 | type: MessageType.ERROR, |
| 216 | text: |
| 217 | data?.message || |
| 218 | `Automatic update failed. Please try updating manually`, |
| 219 | }, |
| 220 | Date.now(), |
| 221 | ); |
| 222 | }; |
| 223 | |
| 224 | const handleUpdateSuccess = () => { |
| 225 | successfullyInstalled = true; |
| 226 | setUpdateInfo(null); |
| 227 | addItem( |
| 228 | { |
| 229 | type: MessageType.INFO, |
| 230 | text: `Update successful! The new version will be used on your next run.`, |
| 231 | }, |
| 232 | Date.now(), |
| 233 | ); |
| 234 | }; |
| 235 | |
| 236 | const handleUpdateInfo = (data: { message: string }) => { |
| 237 | addItem( |
| 238 | { |
| 239 | type: MessageType.INFO, |
| 240 | text: data.message, |
| 241 | }, |
| 242 | Date.now(), |
| 243 | ); |
| 244 | }; |
| 245 | |
| 246 | updateEventEmitter.on('update-received', handleUpdateReceived); |
no test coverage detected