aboutsummaryrefslogtreecommitdiff
path: root/src/utils/messages.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/messages.ts')
-rw-r--r--src/utils/messages.ts59
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;
+ }
+};