Skip to content

Commit

Permalink
fix(rn): conversation readAt by member
Browse files Browse the repository at this point in the history
Signed-off-by: Godefroy Ponsinet <godefroy.ponsinet@outlook.com>
  • Loading branch information
90dy committed Apr 3, 2019
1 parent 5cbb6cc commit ec11862
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 6 deletions.
4 changes: 2 additions & 2 deletions client/react-native/common/components/Screens/Chats/List.js
Expand Up @@ -138,8 +138,8 @@ const ItemBase = fragments.Conversation(
render () {
const { data, navigation, t } = this.props
const { connected, unread } = this.state
const { readAt } = data
const isRead = new Date(readAt).getTime() > 0

const isRead = utils.isRead(data)

// fix when contact request is send after conversation invite
if (
Expand Down
Expand Up @@ -17,6 +17,7 @@ export default component =>
id
createdAt
updatedAt
readAt
status
contact {
id
Expand Down
12 changes: 12 additions & 0 deletions client/react-native/common/utils/conversation.js
@@ -1,5 +1,7 @@
import { btoa, atob } from 'b64-lite'

import { BertyEntityContactInputStatus } from '../graphql/enums.gen'

export default {
id: '',
title: '',
Expand All @@ -25,3 +27,13 @@ export const getTitle = ({ title, members }) =>

export const getRelayID = id => btoa(`conversation:${id}`)
export const getCoreID = id => atob(id).match(/:(.*)$/)[1]

export const isRead = ({ members }) => {
const myself = members.find(
_ => _.contact.status === BertyEntityContactInputStatus.Myself
)
if (myself == null) {
return true
}
return new Date(myself.readAt).getTime() > 0
}
6 changes: 3 additions & 3 deletions core/node/mainloop.go
Expand Up @@ -258,9 +258,9 @@ func (n *Node) envelopeFromEvent(ctx context.Context, event *entity.Event) (*ent
}

func (n *Node) sendDispatch(ctx context.Context, dispatch *entity.EventDispatch, event *entity.Event, envelope *entity.Envelope) error {
tracer := tracing.EnterFunc(ctx, dispatch, envelope)
defer tracer.Finish()
ctx = tracer.Context()
// tracer := tracing.EnterFunc(ctx, dispatch, envelope)
// defer tracer.Finish()
// ctx = tracer.Context()

if dispatch.ContactID == n.UserID() {
return nil
Expand Down
25 changes: 24 additions & 1 deletion core/node/nodeapi_conversation.go
Expand Up @@ -284,6 +284,8 @@ func (n *Node) ConversationMember(ctx context.Context, input *entity.Conversatio
}

func (n *Node) ConversationUpdate(ctx context.Context, input *entity.Conversation) (*entity.Conversation, error) {
var err error

tracer := tracing.EnterFunc(ctx, input)
defer tracer.Finish()
ctx = tracer.Context()
Expand All @@ -292,7 +294,28 @@ func (n *Node) ConversationUpdate(ctx context.Context, input *entity.Conversatio

sql := n.sql(ctx)

if err := sql.Save(input).Error; err != nil {
// get conversation
conversation := &entity.Conversation{ID: input.ID}
if err = sql.Model(conversation).Where(conversation).First(conversation).Error; err != nil {
return nil, err
}

// get interactive member (current user)
im, err := conversation.GetInteractiveMember(n.UserID())
if err != nil {
return nil, err
}

if err = im.SetTitle(input.Title); err != nil {
return nil, err
}

if err = im.SetTopic(input.Topic); err != nil {
return nil, err
}

// save conversation
if err = bsql.ConversationSave(sql, conversation); err != nil {
return nil, errors.Wrap(err, "cannot update conversation")
}

Expand Down

0 comments on commit ec11862

Please sign in to comment.