From 953dc93ed5a14ea5b092c3aa3be873f957710786 Mon Sep 17 00:00:00 2001 From: Roland Osborne Date: Fri, 4 Mar 2022 12:43:46 -0800 Subject: [PATCH] fixing topics not updating --- net/server/internal/modelUtil.go | 2 + net/server/internal/testApp.go | 80 +++++++++++++--------- net/server/internal/ucMessangerApp_test.go | 2 - 3 files changed, 51 insertions(+), 33 deletions(-) diff --git a/net/server/internal/modelUtil.go b/net/server/internal/modelUtil.go index d9b68131..6e90ade9 100644 --- a/net/server/internal/modelUtil.go +++ b/net/server/internal/modelUtil.go @@ -159,6 +159,7 @@ func getChannelRevisionModel(slot *store.ChannelSlot, showData bool) *Channel { Revision: slot.Revision, Data: &ChannelData { DetailRevision: slot.Channel.DetailRevision, + TopicRevision: slot.Channel.TopicRevision, }, } } @@ -200,6 +201,7 @@ func getChannelModel(slot *store.ChannelSlot, showData bool, showList bool) *Cha Revision: slot.Revision, Data: &ChannelData { DetailRevision: slot.Channel.DetailRevision, + TopicRevision: slot.Channel.TopicRevision, ChannelDetail: &ChannelDetail{ DataType: slot.Channel.DataType, Data: slot.Channel.Data, diff --git a/net/server/internal/testApp.go b/net/server/internal/testApp.go index 162557ad..06ee2d24 100644 --- a/net/server/internal/testApp.go +++ b/net/server/internal/testApp.go @@ -182,7 +182,7 @@ func (c *TestContactData) UpdateContactChannels() (err error) { tc.channel.Revision = channel.Revision } } else { - tc := &TestChannel{ channel: Channel{ Id: channel.Id } } + tc := &TestChannel{ channel: Channel{ Id: channel.Id, Data: &ChannelData{} } } c.channels[channel.Id] = tc if err = c.UpdateContactChannel(tc, &channel); err != nil { return @@ -191,28 +191,37 @@ func (c *TestContactData) UpdateContactChannels() (err error) { } } } - return nil + return } -func (c *TestContactData) UpdateContactChannel(testChannel *TestChannel, channel *Channel) (err error) { - if testChannel.channel.Revision != channel.Revision { +func (c *TestContactData) UpdateContactChannel(storeChannel *TestChannel, channel *Channel) (err error) { + if storeChannel.channel.Revision != channel.Revision { + if storeChannel.channel.Data.TopicRevision != channel.Data.TopicRevision { + if err = c.UpdateContactChannelTopics(storeChannel); err != nil { + return + } + storeChannel.channel.Data.TopicRevision = channel.Data.TopicRevision + } if channel.Data.ChannelDetail != nil { - testChannel.channel.Data = channel.Data - } else if testChannel.channel.Data == nil || testChannel.channel.Data.DetailRevision != channel.Data.DetailRevision { + storeChannel.channel.Data.ChannelDetail = channel.Data.ChannelDetail + storeChannel.channel.Data.DetailRevision = channel.Data.DetailRevision + } else if storeChannel.channel.Data.DetailRevision != channel.Data.DetailRevision { token := c.card.Data.CardProfile.Guid + "." + c.card.Data.CardDetail.Token - params := &TestApiParams{ query: "/channels/{channelId}", path: map[string]string{ "channelId": channel.Id }, tokenType: APP_TOKENCONTACT, token: token } + params := &TestApiParams{ query: "/channel/{channelId}", path: map[string]string{ "channelId": channel.Id }, + tokenType: APP_TOKENCONTACT, token: token } channel := Channel{} response := &TestApiResponse{ data: &channel } if err = TestApiRequest(GetChannel, params, response); err != nil { return } if channel.Data == nil { - delete(c.channels, channel.Id) + err = errors.New("channel removed during update") + return } - testChannel.channel.Data = channel.Data + storeChannel.channel.Data.ChannelDetail = channel.Data.ChannelDetail + storeChannel.channel.Data.DetailRevision = channel.Data.DetailRevision } } - err = c.UpdateContactChannelTopics(testChannel) return } @@ -244,7 +253,7 @@ func (c *TestContactData) UpdateContactChannelTopics(testChannel *TestChannel) ( testChannel.topics[topic.Id] = &topic } } - return nil + return } func (c *TestContactData) UpdateContactCardDetail() (err error) { @@ -375,45 +384,54 @@ func (a *TestApp) UpdateChannels() (err error) { if channel.Data == nil { delete(a.channels, channel.Id) } else { - c, set := a.channels[channel.Id] + storeChannel, set := a.channels[channel.Id] if set { - if channel.Revision != c.channel.Revision { - if err = a.UpdateChannel(c, &channel); err != nil { + if channel.Revision != storeChannel.channel.Revision { + if err = a.UpdateChannel(storeChannel, &channel); err != nil { return } - c.channel.Revision = channel.Revision + storeChannel.channel.Revision = channel.Revision } } else { - c := &TestChannel{ channel: Channel{ Id: channel.Id } } - a.channels[channel.Id] = c - if err = a.UpdateChannel(c, &channel); err != nil { + storeChannel := &TestChannel{ channel: Channel{ Id: channel.Id, Data: &ChannelData{} } } + a.channels[channel.Id] = storeChannel + if err = a.UpdateChannel(storeChannel, &channel); err != nil { return } - c.channel.Revision = channel.Revision + storeChannel.channel.Revision = channel.Revision } } } return } -func (a *TestApp) UpdateChannel(testChannel *TestChannel, channel *Channel) (err error) { - if testChannel.channel.Revision != channel.Revision { +func (a *TestApp) UpdateChannel(storeChannel *TestChannel, channel *Channel) (err error) { + if storeChannel.channel.Revision != channel.Revision { + if storeChannel.channel.Data.TopicRevision != channel.Data.TopicRevision { + if err = a.UpdateChannelTopics(storeChannel); err != nil { + return + } + storeChannel.channel.Data.TopicRevision = channel.Data.TopicRevision + } if channel.Data.ChannelDetail != nil { - testChannel.channel.Data = channel.Data - } else if testChannel.channel.Data == nil || testChannel.channel.Data.DetailRevision != channel.Data.DetailRevision { - c := Channel{} - params := &TestApiParams{ query: "/channel/{channelId}", path: map[string]string{ "channelId": channel.Id }, tokenType: APP_TOKENAPP, token: a.token } - response := &TestApiResponse{ data: &c } + storeChannel.channel.Data.ChannelDetail = channel.Data.ChannelDetail + storeChannel.channel.Data.DetailRevision = channel.Data.DetailRevision + } else if storeChannel.channel.Data.DetailRevision != channel.Data.DetailRevision { + params := &TestApiParams{ query: "/channel/{channelId}", path: map[string]string{ "channelId": channel.Id }, + tokenType: APP_TOKENAPP, token: a.token } + channel := Channel{} + response := &TestApiResponse{ data: &channel } if err = TestApiRequest(GetChannel, params, response); err != nil { return } - if c.Data == nil { - delete(a.channels, channel.Id) + if channel.Data == nil { + err = errors.New("channel removed during update") + return } - testChannel.channel.Data = c.Data + storeChannel.channel.Data.ChannelDetail = channel.Data.ChannelDetail + storeChannel.channel.Data.DetailRevision = channel.Data.DetailRevision } } - err = a.UpdateChannelTopics(testChannel) return } @@ -443,7 +461,7 @@ func (a *TestApp) UpdateChannelTopics(testChannel *TestChannel) (err error) { testChannel.topics[topic.Id] = &topic } } - return nil + return } func (a *TestApp) UpdateCards() (err error) { diff --git a/net/server/internal/ucMessangerApp_test.go b/net/server/internal/ucMessangerApp_test.go index 056aa1f0..c2fca78a 100644 --- a/net/server/internal/ucMessangerApp_test.go +++ b/net/server/internal/ucMessangerApp_test.go @@ -168,8 +168,6 @@ func TestMessangerApp(t *testing.T) { if testChannel.channel.Id == channel.Id { for _, t := range testChannel.topics { if t.Id == topic.Id { -PrintMsg(t) -PrintMsg(topic) return true } }