fixing topics not updating

This commit is contained in:
Roland Osborne 2022-03-04 12:43:46 -08:00
parent c6653f126b
commit 953dc93ed5
3 changed files with 51 additions and 33 deletions

View File

@ -159,6 +159,7 @@ func getChannelRevisionModel(slot *store.ChannelSlot, showData bool) *Channel {
Revision: slot.Revision, Revision: slot.Revision,
Data: &ChannelData { Data: &ChannelData {
DetailRevision: slot.Channel.DetailRevision, 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, Revision: slot.Revision,
Data: &ChannelData { Data: &ChannelData {
DetailRevision: slot.Channel.DetailRevision, DetailRevision: slot.Channel.DetailRevision,
TopicRevision: slot.Channel.TopicRevision,
ChannelDetail: &ChannelDetail{ ChannelDetail: &ChannelDetail{
DataType: slot.Channel.DataType, DataType: slot.Channel.DataType,
Data: slot.Channel.Data, Data: slot.Channel.Data,

View File

@ -182,7 +182,7 @@ func (c *TestContactData) UpdateContactChannels() (err error) {
tc.channel.Revision = channel.Revision tc.channel.Revision = channel.Revision
} }
} else { } else {
tc := &TestChannel{ channel: Channel{ Id: channel.Id } } tc := &TestChannel{ channel: Channel{ Id: channel.Id, Data: &ChannelData{} } }
c.channels[channel.Id] = tc c.channels[channel.Id] = tc
if err = c.UpdateContactChannel(tc, &channel); err != nil { if err = c.UpdateContactChannel(tc, &channel); err != nil {
return return
@ -191,28 +191,37 @@ func (c *TestContactData) UpdateContactChannels() (err error) {
} }
} }
} }
return nil return
} }
func (c *TestContactData) UpdateContactChannel(testChannel *TestChannel, channel *Channel) (err error) { func (c *TestContactData) UpdateContactChannel(storeChannel *TestChannel, channel *Channel) (err error) {
if testChannel.channel.Revision != channel.Revision { 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 { if channel.Data.ChannelDetail != nil {
testChannel.channel.Data = channel.Data storeChannel.channel.Data.ChannelDetail = channel.Data.ChannelDetail
} else if testChannel.channel.Data == nil || testChannel.channel.Data.DetailRevision != channel.Data.DetailRevision { 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 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{} channel := Channel{}
response := &TestApiResponse{ data: &channel } response := &TestApiResponse{ data: &channel }
if err = TestApiRequest(GetChannel, params, response); err != nil { if err = TestApiRequest(GetChannel, params, response); err != nil {
return return
} }
if channel.Data == nil { 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 return
} }
@ -244,7 +253,7 @@ func (c *TestContactData) UpdateContactChannelTopics(testChannel *TestChannel) (
testChannel.topics[topic.Id] = &topic testChannel.topics[topic.Id] = &topic
} }
} }
return nil return
} }
func (c *TestContactData) UpdateContactCardDetail() (err error) { func (c *TestContactData) UpdateContactCardDetail() (err error) {
@ -375,45 +384,54 @@ func (a *TestApp) UpdateChannels() (err error) {
if channel.Data == nil { if channel.Data == nil {
delete(a.channels, channel.Id) delete(a.channels, channel.Id)
} else { } else {
c, set := a.channels[channel.Id] storeChannel, set := a.channels[channel.Id]
if set { if set {
if channel.Revision != c.channel.Revision { if channel.Revision != storeChannel.channel.Revision {
if err = a.UpdateChannel(c, &channel); err != nil { if err = a.UpdateChannel(storeChannel, &channel); err != nil {
return return
} }
c.channel.Revision = channel.Revision storeChannel.channel.Revision = channel.Revision
} }
} else { } else {
c := &TestChannel{ channel: Channel{ Id: channel.Id } } storeChannel := &TestChannel{ channel: Channel{ Id: channel.Id, Data: &ChannelData{} } }
a.channels[channel.Id] = c a.channels[channel.Id] = storeChannel
if err = a.UpdateChannel(c, &channel); err != nil { if err = a.UpdateChannel(storeChannel, &channel); err != nil {
return return
} }
c.channel.Revision = channel.Revision storeChannel.channel.Revision = channel.Revision
} }
} }
} }
return return
} }
func (a *TestApp) UpdateChannel(testChannel *TestChannel, channel *Channel) (err error) { func (a *TestApp) UpdateChannel(storeChannel *TestChannel, channel *Channel) (err error) {
if testChannel.channel.Revision != channel.Revision { 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 { if channel.Data.ChannelDetail != nil {
testChannel.channel.Data = channel.Data storeChannel.channel.Data.ChannelDetail = channel.Data.ChannelDetail
} else if testChannel.channel.Data == nil || testChannel.channel.Data.DetailRevision != channel.Data.DetailRevision { storeChannel.channel.Data.DetailRevision = channel.Data.DetailRevision
c := Channel{} } 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 } params := &TestApiParams{ query: "/channel/{channelId}", path: map[string]string{ "channelId": channel.Id },
response := &TestApiResponse{ data: &c } tokenType: APP_TOKENAPP, token: a.token }
channel := Channel{}
response := &TestApiResponse{ data: &channel }
if err = TestApiRequest(GetChannel, params, response); err != nil { if err = TestApiRequest(GetChannel, params, response); err != nil {
return return
} }
if c.Data == nil { if channel.Data == nil {
delete(a.channels, channel.Id) 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 return
} }
@ -443,7 +461,7 @@ func (a *TestApp) UpdateChannelTopics(testChannel *TestChannel) (err error) {
testChannel.topics[topic.Id] = &topic testChannel.topics[topic.Id] = &topic
} }
} }
return nil return
} }
func (a *TestApp) UpdateCards() (err error) { func (a *TestApp) UpdateCards() (err error) {

View File

@ -168,8 +168,6 @@ func TestMessangerApp(t *testing.T) {
if testChannel.channel.Id == channel.Id { if testChannel.channel.Id == channel.Id {
for _, t := range testChannel.topics { for _, t := range testChannel.topics {
if t.Id == topic.Id { if t.Id == topic.Id {
PrintMsg(t)
PrintMsg(topic)
return true return true
} }
} }