Skip to content

Commit

Permalink
feat: Add optional filter parameter to list methods in api/node/servi…
Browse files Browse the repository at this point in the history
…ce.proto

Signed-off-by: Godefroy Ponsinet <godefroy.ponsinet@outlook.com>
  • Loading branch information
90dy committed Oct 2, 2018
1 parent 723c9e8 commit 4d8e25f
Show file tree
Hide file tree
Showing 15 changed files with 776 additions and 110 deletions.
11 changes: 5 additions & 6 deletions client/react-native/common/components/Screens/Settings/List.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,10 @@ export default class List extends PureComponent {
const { navigation } = this.props
return (
<Screen>
<QueryReducer query={queries.ContactList}>
<QueryReducer
query={queries.ContactList}
variables={{ status: 'Myself' }}
>
{(state, retry) => {
switch (state.type) {
default:
Expand All @@ -92,11 +95,7 @@ export default class List extends PureComponent {
return (
<List.Menu
navigation={navigation}
data={{
...state.data.ContactList.find(
contact => contact.status === 'Myself'
),
}}
data={state.data.ContactList[0]}
/>
)
case state.error:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React, { PureComponent } from 'react'
import { Image, ActivityIndicator } from 'react-native'
import { Screen, Menu, Header, Text, Badge } from '../../Library'
import { Screen, Menu, Header, Text, Badge, Flex } from '../../Library'
import { colors } from '../../../constants'
import { queries } from '../../../graphql'
import { QueryReducer } from '../../../relay'
Expand Down Expand Up @@ -101,12 +101,19 @@ export default class MyAccount extends PureComponent {
render () {
return (
<Screen>
<QueryReducer query={queries.ContactList}>
<QueryReducer
query={queries.ContactList}
variables={{ status: 'Myself' }}
>
{(state, retry) => {
switch (state.type) {
default:
case state.loading:
return <ActivityIndicator />
return (
<Flex.Rows justify='center' align='center'>
<ActivityIndicator size='large' />
</Flex.Rows>
)
case state.success:
return (
<MyAccount.Menu
Expand Down
4 changes: 2 additions & 2 deletions client/react-native/common/graphql/queries/ContactList.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { graphql } from 'react-relay'

export default graphql`
query ContactListQuery {
ContactList {
query ContactListQuery($status: BertyEntityContactStatus) {
ContactList(status: $status) {
id
displayName
overrideDisplayName
Expand Down
1 change: 1 addition & 0 deletions client/react-native/common/relay/QueryReducer.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ const handleChildren = (children, state, retry) => {
const QueryReducer = ({ children, ...props }) => (
<Relay.QueryRenderer
environment={environment}
variables={{}}
{...props}
render={({ error, props, retry }) => {
if (!error && !props) {
Expand Down
10 changes: 9 additions & 1 deletion client/react-native/common/schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -491,6 +491,14 @@ type BertyNodeEventListInput {
filter: BertyP2pEvent
}

type BertyNodeContactListInput {
filter: BertyEntityContact
}

type BertyNodeConversationListInput {
filter: BertyEntityConversation
}

type BertyNodeConversationManageMembersInput {
conversation: BertyEntityConversation
members: [BertyEntityConversationMember]
Expand Down Expand Up @@ -622,7 +630,7 @@ type Query {

EventList(limit: Int, kind: BertyP2pKind, conversationID: String): [BertyP2pEvent]
GetEvent(eventID: String!): BertyP2pEvent
ContactList: [BertyEntityContact]
ContactList(status: BertyEntityContactStatus): [BertyEntityContact]
GetContact(contactID: String!): BertyEntityContact
ConversationList: [BertyEntityConversation]
GetConversation(conversationID: String!): BertyEntityConversation
Expand Down
4 changes: 2 additions & 2 deletions core/api/client/berty.node.service.gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions core/api/client/jsonclient/berty.node.service.gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

132 changes: 132 additions & 0 deletions core/api/node/graphql/converts.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package graphql

//TODO: generate this file

import (
"encoding/base64"
"fmt"
Expand Down Expand Up @@ -79,6 +81,23 @@ func convertContactStatus(value entity.Contact_Status) *model.BertyEntityContact
return &ret
}

func convertGQLToEntityContactStatus(value *model.BertyEntityContactStatus) (*entity.Contact_Status, error) {
ret, ok := map[model.BertyEntityContactStatus]entity.Contact_Status{
model.BertyEntityContactStatusUnknown: entity.Contact_Unknown,
model.BertyEntityContactStatusIsFriend: entity.Contact_IsFriend,
model.BertyEntityContactStatusIsTrustedFriend: entity.Contact_IsTrustedFriend,
model.BertyEntityContactStatusIsRequested: entity.Contact_IsRequested,
model.BertyEntityContactStatusRequestedMe: entity.Contact_RequestedMe,
model.BertyEntityContactStatusIsBlocked: entity.Contact_IsBlocked,
model.BertyEntityContactStatusMyself: entity.Contact_Myself,
}[*value]
if !ok {
t := entity.Contact_Unknown
return &t, nil
}
return &ret, nil
}

func convertContact(contact *entity.Contact) *model.BertyEntityContact {
if contact == nil {
return &model.BertyEntityContact{}
Expand All @@ -99,6 +118,32 @@ func convertContact(contact *entity.Contact) *model.BertyEntityContact {
}
}

// func convertGQLToEntityContact(contact *model.BertyEntityContact) (*entity.Contact, error) {
// if contact == nil {
// return &entity.Contact{}, nil
// }
//
// var gID globalID
// err := gID.FromString(contact.ID)
// if err != nil {
// return nil, err
// }
//
// ret := &entity.Contact{
// ID: gID.ID,
// DisplayName: *contact.DisplayName,
// CreatedAt: *contact.CreatedAt.Value,
// UpdatedAt: *contact.UpdatedAt.Value,
// DeletedAt: contact.DeletedAt.Value,
// }
// status, err := convertGQLToEntityContactStatus(contact.Status)
// if err != nil {
// return nil, err
// }
// ret.Status = *status
// return ret, nil
// }

func convertConversationMemberStatus(value entity.ConversationMember_Status) *model.BertyEntityConversationMemberStatus {
ret, ok := map[entity.ConversationMember_Status]model.BertyEntityConversationMemberStatus{
entity.ConversationMember_Unknown: model.BertyEntityConversationMemberStatusUnknown,
Expand All @@ -115,6 +160,26 @@ func convertConversationMemberStatus(value entity.ConversationMember_Status) *mo
return &ret
}

// func convertGQLToEntityConversationMemberStatus(status *model.BertyEntityConversationMemberStatus) (*entity.ConversationMember_Status, error) {
// if status == nil {
// t := entity.ConversationMember_Unknown
// return &t, nil
// }
//
// ret, ok := map[model.BertyEntityConversationMemberStatus]entity.ConversationMember_Status{
// model.BertyEntityConversationMemberStatusUnknown: entity.ConversationMember_Unknown,
// model.BertyEntityConversationMemberStatusOwner: entity.ConversationMember_Owner,
// model.BertyEntityConversationMemberStatusActive: entity.ConversationMember_Active,
// model.BertyEntityConversationMemberStatusBlocked: entity.ConversationMember_Blocked,
// }[*status]
//
// if !ok {
// t := entity.ConversationMember_Unknown
// return &t, nil
// }
// return &ret, nil
// }

func convertConversationMember(conversationMember *entity.ConversationMember) *model.BertyEntityConversationMember {
if conversationMember == nil {
return &model.BertyEntityConversationMember{}
Expand All @@ -137,6 +202,40 @@ func convertConversationMember(conversationMember *entity.ConversationMember) *m
}
}

// func convertGQLToEntityConversationMember(conversationMember *model.BertyEntityConversationMember) (*entity.ConversationMember, error) {
// if conversationMember == nil {
// return &entity.ConversationMember{}, nil
// }
//
// var gID globalID
// if err := gID.FromString(conversationMember.ID); err != nil {
// return nil, err
// }
//
// ret := &entity.ConversationMember{
// ID: gID.ID,
// ConversationID: *conversationMember.ConversationID,
// ContactID: *conversationMember.ContactID,
// CreatedAt: *conversationMember.CreatedAt.Value,
// UpdatedAt: *conversationMember.UpdatedAt.Value,
// DeletedAt: conversationMember.DeletedAt.Value,
// }
//
// status, err := convertGQLToEntityConversationMemberStatus(conversationMember.Status)
// if err != nil {
// return nil, err
// }
// ret.Status = *status
//
// contact, err := convertGQLToEntityContact(conversationMember.Contact)
// if err != nil {
// return nil, err
// }
// ret.Contact = contact
//
// return ret, nil
// }

func convertConversation(conversation *entity.Conversation) *model.BertyEntityConversation {
if conversation == nil {
return &model.BertyEntityConversation{}
Expand Down Expand Up @@ -168,6 +267,39 @@ func convertConversation(conversation *entity.Conversation) *model.BertyEntityCo
}
}

// func convertGQLToEntityConversation(conversation *model.BertyEntityConversation) (*entity.Conversation, error) {
// if conversation == nil {
// return &entity.Conversation{}, nil
// }
//
// var members []*entity.ConversationMember
// for i := range conversation.Members {
// member := conversation.Members[i]
// if member == nil {
// continue
// }
// entity, err := convertGQLToEntityConversationMember(member)
// if err != nil {
// return nil, err
// }
// members = append(members, entity)
// }
//
// var gID globalID
// if err := gID.FromString(conversation.ID); err != nil {
// return nil, err
// }
// return &entity.Conversation{
// ID: gID.ID,
// Title: *conversation.Title,
// Topic: *conversation.Topic,
// Members: members,
// CreatedAt: *conversation.CreatedAt.Value,
// UpdatedAt: *conversation.UpdatedAt.Value,
// DeletedAt: conversation.DeletedAt.Value,
// }, nil
// }

func convertUint32(value uint32) *int {
t := int(value)

Expand Down

0 comments on commit 4d8e25f

Please sign in to comment.