@@ -171,7 +171,7 @@ module App =
172 { model with
172 { model with
173 Auth = Identified(id, Online token)
173 Auth = Identified(id, Online token)
174− Page = Conversations
174+ Page = match model.Page with Setup -> Conversations | p -> p
175 Error = None
175 Error = None
176 PollStatus = "polling..."
176 PollStatus = "polling..."
177 FlushingOutbox = true },
177 FlushingOutbox = true },
@@ -185,6 +185,14 @@ module App =
185 PollRetries = 0 },
185 PollRetries = 0 },
189+ match model.Auth with
190+ | Identified(id, Online _) ->
191+ let m = setConn Connecting model
192+ { m with FlushingOutbox = false; PollRetries = 0 },
193+ [ CmdConnect(model.ServerUrl, id) ]
188 | DoDisconnect ->
196 | DoDisconnect ->
189 { setConn Offline model with
197 { setConn Offline model with
190 PollStatus = ""
198 PollStatus = ""
@@ -482,6 +490,9 @@ module App =
482 do! Store.dequeueOutbox item.Id
490 do! Store.dequeueOutbox item.Id
483 dispatch (FlushResult true)
491 dispatch (FlushResult true)
494+ log "outbox unauthorized, reauthenticating"
495+ dispatch TokenExpired
485 | ServerRejected msg ->
496 | ServerRejected msg ->
486 log $"outbox rejected, dropping: {msg}"
497 log $"outbox rejected, dropping: {msg}"
487 do! Store.dequeueOutbox item.Id
498 do! Store.dequeueOutbox item.Id
@@ -503,6 +514,11 @@ module App =
503 let! response = poll session.Url session.Token cursor
514 let! response = poll session.Url session.Token cursor
504 log $"poll response: {response.Events.Length} events, cursor={response.Cursor}"
515 log $"poll response: {response.Events.Length} events, cursor={response.Cursor}"
517+ if not response.Authorized then
518+ log "poll unauthorized, reauthenticating"
519+ dispatch TokenExpired
506 let ackIds = response.Events |> Array.map _.Id |> Array.toList
522 let ackIds = response.Events |> Array.map _.Id |> Array.toList
508 let results =
524 let results =