| 78 | } |
| 79 | |
| 80 | export function setUpdateHandler( |
| 81 | addItem: (item: Omit<HistoryItem, 'id'>, timestamp: number) => void, |
| 82 | setUpdateInfo: (info: UpdateObject | null) => void, |
| 83 | ) { |
| 84 | let successfullyInstalled = false; |
| 85 | const handleUpdateRecieved = (info: UpdateObject) => { |
| 86 | setUpdateInfo(info); |
| 87 | const savedMessage = info.message; |
| 88 | setTimeout(() => { |
| 89 | if (!successfullyInstalled) { |
| 90 | addItem( |
| 91 | { |
| 92 | type: MessageType.INFO, |
| 93 | text: savedMessage, |
| 94 | }, |
| 95 | Date.now(), |
| 96 | ); |
| 97 | } |
| 98 | setUpdateInfo(null); |
| 99 | }, 60000); |
| 100 | }; |
| 101 | |
| 102 | const handleUpdateFailed = () => { |
| 103 | setUpdateInfo(null); |
| 104 | addItem( |
| 105 | { |
| 106 | type: MessageType.ERROR, |
| 107 | text: `Automatic update failed. Please try updating manually`, |
| 108 | }, |
| 109 | Date.now(), |
| 110 | ); |
| 111 | }; |
| 112 | |
| 113 | const handleUpdateSuccess = () => { |
| 114 | successfullyInstalled = true; |
| 115 | setUpdateInfo(null); |
| 116 | addItem( |
| 117 | { |
| 118 | type: MessageType.INFO, |
| 119 | text: `Update successful! The new version will be used on your next run.`, |
| 120 | }, |
| 121 | Date.now(), |
| 122 | ); |
| 123 | }; |
| 124 | |
| 125 | const handleUpdateInfo = (data: { message: string }) => { |
| 126 | addItem( |
| 127 | { |
| 128 | type: MessageType.INFO, |
| 129 | text: data.message, |
| 130 | }, |
| 131 | Date.now(), |
| 132 | ); |
| 133 | }; |
| 134 | |
| 135 | updateEventEmitter.on('update-received', handleUpdateRecieved); |
| 136 | updateEventEmitter.on('update-failed', handleUpdateFailed); |
| 137 | updateEventEmitter.on('update-success', handleUpdateSuccess); |