(feUpdate *rpctypes.VDomFrontendUpdate)
| 175 | } |
| 176 | |
| 177 | func (h *httpHandlers) processFrontendUpdate(feUpdate *rpctypes.VDomFrontendUpdate) (*rpctypes.VDomBackendUpdate, error) { |
| 178 | h.renderLock.Lock() |
| 179 | defer h.renderLock.Unlock() |
| 180 | |
| 181 | if feUpdate.Dispose { |
| 182 | log.Printf("got dispose from frontend\n") |
| 183 | h.Client.doShutdown("got dispose from frontend") |
| 184 | return nil, nil |
| 185 | } |
| 186 | |
| 187 | if h.Client.GetIsDone() { |
| 188 | return nil, nil |
| 189 | } |
| 190 | |
| 191 | h.Client.Root.RenderTs = feUpdate.Ts |
| 192 | |
| 193 | // Close all open modals on resync (e.g., page refresh) |
| 194 | if feUpdate.Resync { |
| 195 | h.Client.CloseAllModals() |
| 196 | } |
| 197 | |
| 198 | // run events |
| 199 | h.Client.RunEvents(feUpdate.Events) |
| 200 | // update refs |
| 201 | for _, ref := range feUpdate.RefUpdates { |
| 202 | h.Client.Root.UpdateRef(ref) |
| 203 | } |
| 204 | |
| 205 | var update *rpctypes.VDomBackendUpdate |
| 206 | var renderErr error |
| 207 | |
| 208 | if feUpdate.Resync || true { |
| 209 | update, renderErr = h.Client.fullRender() |
| 210 | } else { |
| 211 | update, renderErr = h.Client.incrementalRender() |
| 212 | } |
| 213 | |
| 214 | if renderErr != nil { |
| 215 | return nil, renderErr |
| 216 | } |
| 217 | |
| 218 | update.CreateTransferElems() |
| 219 | return update, nil |
| 220 | } |
| 221 | |
| 222 | func (h *httpHandlers) handleData(w http.ResponseWriter, r *http.Request) { |
| 223 | defer func() { |
no test coverage detected