diff options
author | Ivan Chen <ivan@tagg.id> | 2021-04-09 19:49:27 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-09 19:49:27 -0400 |
commit | 9d5ad9bea36c0b2abffd04b25126d18158017137 (patch) | |
tree | 7d7c58cbdb67e3e0945a6ed2ccaa658f0048e887 /src/utils/messages.ts | |
parent | a6580f418e87775a5e683e56735952df4f7fa5a9 (diff) | |
parent | ad9db5ffd0b2fb6334fd8237e0600a76d25c7053 (diff) |
Merge pull request #356 from shravyaramesh/tma767-message-button
[TMA767] Message button
Diffstat (limited to 'src/utils/messages.ts')
-rw-r--r-- | src/utils/messages.ts | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/utils/messages.ts b/src/utils/messages.ts index d63f2b7a..dd29f317 100644 --- a/src/utils/messages.ts +++ b/src/utils/messages.ts @@ -1,6 +1,9 @@ +import AsyncStorage from '@react-native-community/async-storage'; import moment from 'moment'; +import {loadChatTokenService} from '../services/ChatService'; import {RootState} from '../store/rootReducer'; import {ChannelGroupedType} from '../types'; +import {StreamChat} from 'stream-chat'; /** * Finds the difference in time in minutes @@ -81,3 +84,59 @@ export const getMember = ( : []; return otherMembers.length === 1 ? otherMembers[0] : undefined; }; + +export const connectChatAccount = async ( + loggedInUserId: string, + chatClient: StreamChat, +) => { + try { + await getChatToken(); + const chatToken = await AsyncStorage.getItem('chatToken'); + if (!chatClient.user && chatToken) { + await chatClient.connectUser( + { + id: loggedInUserId, + }, + chatToken, + ); + return true; + } else if (chatClient.user) { + return true; + } else { + console.log('Unable to connect to stream. Empty chat token'); + return false; + } + } catch (err) { + console.log('Error while connecting user to Stream: ', err); + return false; + } +}; + +export const getChatToken = async () => { + try { + const currentChatToken = await AsyncStorage.getItem('chatToken'); + if (currentChatToken === null) { + const chatToken = await loadChatTokenService(); + await AsyncStorage.setItem('chatToken', chatToken); + } + } catch (err) { + console.log(err); + } +}; + +export const createChannel = async ( + loggedInUser: string, + id: string, + chatClient: any, +) => { + try { + const channel = chatClient.channel('messaging', { + members: [loggedInUser, id], + }); + await channel.watch(); + return channel; + } catch (error) { + console.log(error); + throw error; + } +}; |