From c85ad033d174e7419c5816abdc4eb5dc07f3c908 Mon Sep 17 00:00:00 2001 From: diamondburned Date: Thu, 20 Aug 2020 15:23:09 -0700 Subject: [PATCH] Added resume support --- go.mod | 4 ++-- go.sum | 4 ++++ service.go | 17 ++++++++++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 24490b5..e6dec9d 100644 --- a/go.mod +++ b/go.mod @@ -3,9 +3,9 @@ module github.com/diamondburned/cchat-discord go 1.14 require ( - github.com/diamondburned/arikawa v1.2.0 + github.com/diamondburned/arikawa v1.3.0 github.com/diamondburned/cchat v0.0.49 - github.com/diamondburned/ningen v0.1.1-0.20200818185419-0d3e89f25ee1 + github.com/diamondburned/ningen v0.1.1-0.20200820222120-e86664f3f084 github.com/dustin/go-humanize v1.0.0 github.com/go-test/deep v1.0.6 github.com/pkg/errors v0.9.1 diff --git a/go.sum b/go.sum index fcefe00..15722d4 100644 --- a/go.sum +++ b/go.sum @@ -39,6 +39,8 @@ github.com/diamondburned/arikawa v1.1.6 h1:Y/ioTYipS2v/NXfcAEhCnMTzrpxDjWlkjLKKc github.com/diamondburned/arikawa v1.1.6/go.mod h1:nIhVIatzTQhPUa7NB8w4koG1RF9gYbpAr8Fj8sKq660= github.com/diamondburned/arikawa v1.2.0 h1:3dFmpk/G4UwO+Kto0tXd5AbaCKC9KH2ZfnA8UOdzQ1k= github.com/diamondburned/arikawa v1.2.0/go.mod h1:nIhVIatzTQhPUa7NB8w4koG1RF9gYbpAr8Fj8sKq660= +github.com/diamondburned/arikawa v1.3.0 h1:up5q5Ya/QbiFqhMejvl+c03YdsgzkzspsJOWW30A2lk= +github.com/diamondburned/arikawa v1.3.0/go.mod h1:nIhVIatzTQhPUa7NB8w4koG1RF9gYbpAr8Fj8sKq660= github.com/diamondburned/cchat v0.0.34 h1:BGiVxMRA9dmW3rLilIldBvjVan7eTTpaWCCfX9IKBYU= github.com/diamondburned/cchat v0.0.34/go.mod h1:+zXktogE45A0om4fT6B/z6Ii7FXNafjxsNspI0rlhbU= github.com/diamondburned/cchat v0.0.35 h1:WiMGl8BQJgbP9E4xRxgLGlqUsHpTcJgDKDt8/6a7lBk= @@ -115,6 +117,8 @@ github.com/diamondburned/ningen v0.1.1-0.20200816192443-0b6a02d498d2 h1:PodX8lfv github.com/diamondburned/ningen v0.1.1-0.20200816192443-0b6a02d498d2/go.mod h1:PIsJWdDhjgN9OiR+qrDPD8KGQ8UyFuRVrgs3Ewu6a3c= github.com/diamondburned/ningen v0.1.1-0.20200818185419-0d3e89f25ee1 h1:ahr5xvEzrBIpRc3mrdihCd0iCUEawPixulbJk6MVAao= github.com/diamondburned/ningen v0.1.1-0.20200818185419-0d3e89f25ee1/go.mod h1:vglus/9ENunGHSAZxzilq1ApNQMDtYBSG8V4r/vDY1o= +github.com/diamondburned/ningen v0.1.1-0.20200820222120-e86664f3f084 h1:nZiBsM/9Dw9Uxw8iBu3GO5m+BlYmqa3kVIP6LcKJPKQ= +github.com/diamondburned/ningen v0.1.1-0.20200820222120-e86664f3f084/go.mod h1:aXm69MB+Qu04OjBiixQw28zRijDc49vruMJMaHZ2c0Q= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= diff --git a/service.go b/service.go index 1b9e19d..2182f00 100644 --- a/service.go +++ b/service.go @@ -6,6 +6,7 @@ import ( "github.com/diamondburned/arikawa/discord" "github.com/diamondburned/arikawa/gateway" + "github.com/diamondburned/arikawa/session" "github.com/diamondburned/arikawa/state" "github.com/diamondburned/arikawa/utils/httputil/httpdriver" "github.com/diamondburned/cchat" @@ -107,7 +108,7 @@ func NewSession(s *state.State) (*Session, error) { return nil }) - if err := s.Open(); err != nil { + if err := n.Open(); err != nil { return nil, err } @@ -159,6 +160,20 @@ func (s *Session) Save() (map[string]string, error) { } func (s *Session) Servers(container cchat.ServersContainer) error { + // Reset the entire container when the session is closed. + s.AddHandler(func(*session.Closed) { + container.SetServers(nil) + }) + + // Set the entire container again once reconnected. + s.AddHandler(func(*ningen.Connected) { + s.servers(container) + }) + + return s.servers(container) +} + +func (s *Session) servers(container cchat.ServersContainer) error { switch { // If the user has guild folders: case len(s.Ready.Settings.GuildFolders) > 0: