diff options
| author | Kyren223 <Kyren223@proton.me> | 2025-07-15 13:39:53 +0300 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2025-07-19 18:32:12 +0300 |
| commit | 95abbe573e6347797d2eadf3902a7af747d75a82 (patch) | |
| tree | 5c6b75f441cf27d49a7c3bcac8933798aee99d99 /internal/client/ui/core/core.go | |
| parent | 1bc8fc222296418224784a8fc19c06fb11cd0b21 (diff) | |
Implemented caching for TOS hash, if hash matches the user doesn't need
to re-accept the TOS, users can delete the cache if they wish to review
it
Diffstat (limited to 'internal/client/ui/core/core.go')
| -rw-r--r-- | internal/client/ui/core/core.go | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/internal/client/ui/core/core.go b/internal/client/ui/core/core.go index 11772fa..8b45cde 100644 --- a/internal/client/ui/core/core.go +++ b/internal/client/ui/core/core.go @@ -82,6 +82,7 @@ type Model struct { loading loadscreen.Model tos *tosscreen.Model + tosHash string timer timer.Model timeout time.Duration state State @@ -111,6 +112,7 @@ func New(privKey ed25519.PrivateKey, name string) Model { privKey: privKey, loading: loadscreen.New(ConnectingToServer), tos: nil, + tosHash: "", timer: newTimer(InitialTimeout), timeout: InitialTimeout, state: Disconnected, @@ -294,9 +296,22 @@ func (m *Model) updateConnected(message tea.Msg) tea.Cmd { case *packet.TosInfo: m.state = ConnectedReceivedTos - combined := msg.Tos + "\n" + msg.PrivacyPolicy - tos := tosscreen.New(combined) - m.tos = &tos + + server := config.ReadConfig().ServerName + hash, ok := config.ReadCache().TosHashes[server] + if ok && hash == msg.Hash { + // AUTO ACCEPT IF IN CACHE + m.state = ConnectedAcceptedTos + return gateway.Send(&packet.AcceptTos{ + IAgreeToTheTermsOfServiceAndPrivacyPolicy: true, + }) + } else { + m.tosHash = msg.Hash + + combined := msg.Tos + "\n" + msg.PrivacyPolicy + tos := tosscreen.New(combined) + m.tos = &tos + } case *packet.Error: if m.state == ConnectedAcceptedTos { @@ -350,6 +365,11 @@ func (m *Model) updateConnected(message tea.Msg) tea.Cmd { case "enter": if m.state == ConnectedReceivedTos { m.state = ConnectedAcceptedTos + assert.Assert(m.tosHash != "", "hash must have been set by the TosInfo") + config.UseCache(func(cache *config.Cache) { + server := config.ReadConfig().ServerName + cache.TosHashes[server] = m.tosHash + }) return gateway.Send(&packet.AcceptTos{ IAgreeToTheTermsOfServiceAndPrivacyPolicy: true, }) |
