Compare commits

...

3 Commits

Author SHA1 Message Date
Reinaldo Neto 58ab3b0327 refactoring isubscription 2021-12-22 10:43:39 -03:00
Reinaldo Neto 36e2aa759a TRoomModel 2021-12-21 23:11:56 -03:00
Reinaldo Neto 027104a90f Chore: Migrate Room and Subscription model to Typescript 2021-12-21 23:04:12 -03:00
11 changed files with 164 additions and 77 deletions

View File

@ -1,4 +0,0 @@
export interface IRocketChatRecord {
id: string;
updatedAt: Date;
}

View File

@ -1,27 +1,20 @@
import { IRocketChatRecord } from './IRocketChatRecord'; import Model from '@nozbe/watermelondb/Model';
export enum RoomType { import { IServedBy } from './IServedBy';
GROUP = 'p',
DIRECT = 'd', export interface IRoom {
CHANNEL = 'c', id: string;
OMNICHANNEL = 'l', customFields: string[];
THREAD = 'thread' broadcast: boolean;
encrypted: boolean;
e2eKeyId?: string;
ro: boolean;
v: string[];
servedBy: IServedBy;
departmentId: string;
livechatData?: any;
tags?: string[];
avatarETag?: string;
} }
export interface IRoom extends IRocketChatRecord { export type TRoomModel = IRoom & Model;
rid: string;
t: RoomType;
name: string;
fname: string;
prid?: string;
tmid?: string;
topic?: string;
teamMain?: boolean;
teamId?: string;
encrypted?: boolean;
visitor?: boolean;
autoTranslateLanguage?: boolean;
autoTranslate?: boolean;
observe?: Function;
usedCannedResponse: string;
}

View File

@ -0,0 +1,5 @@
export interface IServedBy {
_id: string;
username: string;
ts: Date;
}

View File

@ -0,0 +1,93 @@
export enum SubscriptionType {
GROUP = 'p',
DIRECT = 'd',
CHANNEL = 'c',
OMNICHANNEL = 'l',
THREAD = 'thread'
}
export interface IUserMessage {
_id: string;
username: string;
name: string;
}
// export interface ILastMessage {"_id":string,"rid":string,"tshow":boolean,"tmid":string,"msg":string,"ts":Date,"u":IUserMessage,"_updatedAt":Date,"urls":string[],"mentions":[],"channels":[],"md":[{"type":"PARAGRAPH","value":[{"type":"PLAIN_TEXT","value":"olaaa"}]}],"attachments":[],"reactions":[],"unread":false,"status":0}
export interface ISubscription {
_id: string; // _id belongs watermelonDB
id: string; // id from server
f: boolean;
t: SubscriptionType;
ts: Date;
ls: Date;
name: string;
fname?: string;
rid: string; // the same as id
open: boolean;
alert: boolean;
roles: string[];
unread: number;
userMentions: number;
groupMentions: number;
tunread: string[];
tunreadUser: string[];
tunreadGroup: string[];
roomUpdatedAt: Date;
ro: boolean;
lastOpen: Date;
description?: string;
announcement?: string;
bannerClosed?: boolean;
topic?: string;
blocked: boolean;
blocker: boolean;
reactWhenReadOnly: boolean;
archived: boolean;
joinCodeRequired: boolean;
notifications: any;
muted: string[];
ignored: string[];
broadcast?: boolean;
prid: string;
draftMessage: string;
lastThreadSync: Date;
jitsiTimeout: number;
autoTranslate?: boolean;
autoTranslateLanguage?: boolean;
// lastMessage:
// messages
// threads
// threadMessages
// hideUnreadStatus
// sysMes
// uids
// usernames
// visitor
// departmentId
// servedBy
// livechatData
// tags
// E2EKey
// encrypted
// e2eKeyId
// avatarETag
// teamId
// teamMain
}
// updatedAt: Date;
// rid: string;
// t: SubscriptionType;
// name: string;
// fname: string;
// prid?: string;
// tmid?: string;
// topic?: string;
// teamMain?: boolean;
// teamId?: string;
// encrypted?: boolean;
// visitor?: boolean;
// autoTranslateLanguage?: boolean;
// autoTranslate?: boolean;
// observe?: Function;
// usedCannedResponse: string;

View File

@ -1,6 +1,6 @@
import { NavigatorScreenParams } from '@react-navigation/core'; import { NavigatorScreenParams } from '@react-navigation/core';
import { IRoom } from './definitions/IRoom'; import { ISubscription } from './definitions/ISubscription';
import { IServer } from './definitions/IServer'; import { IServer } from './definitions/IServer';
import { IAttachment } from './definitions/IAttachment'; import { IAttachment } from './definitions/IAttachment';
import { MasterDetailInsideStackParamList } from './stacks/MasterDetailStack/types'; import { MasterDetailInsideStackParamList } from './stacks/MasterDetailStack/types';
@ -28,7 +28,7 @@ export type ShareInsideStackParamList = {
isShareExtension: boolean; isShareExtension: boolean;
serverInfo: IServer; serverInfo: IServer;
text: string; text: string;
room: IRoom; room: ISubscription;
thread: any; // TODO: Change thread: any; // TODO: Change
}; };
SelectServerView: undefined; SelectServerView: undefined;

View File

@ -3,18 +3,18 @@ import { NavigatorScreenParams } from '@react-navigation/core';
import { IAttachment } from '../../definitions/IAttachment'; import { IAttachment } from '../../definitions/IAttachment';
import { IMessage } from '../../definitions/IMessage'; import { IMessage } from '../../definitions/IMessage';
import { IRoom, RoomType } from '../../definitions/IRoom'; import { ISubscription, SubscriptionType } from '../../definitions/ISubscription';
export type MasterDetailChatsStackParamList = { export type MasterDetailChatsStackParamList = {
RoomView: { RoomView: {
rid: string; rid: string;
t: RoomType; t: SubscriptionType;
tmid?: string; tmid?: string;
message?: string; message?: string;
name?: string; name?: string;
fname?: string; fname?: string;
prid?: string; prid?: string;
room: IRoom; room: ISubscription;
jumpToMessageId?: string; jumpToMessageId?: string;
jumpToThreadId?: string; jumpToThreadId?: string;
roomUserId?: string; roomUserId?: string;
@ -27,17 +27,17 @@ export type MasterDetailDrawerParamList = {
export type ModalStackParamList = { export type ModalStackParamList = {
RoomActionsView: { RoomActionsView: {
room: IRoom; room: ISubscription;
member: any; member: any;
rid: string; rid: string;
t: RoomType; t: SubscriptionType;
joined: boolean; joined: boolean;
}; };
RoomInfoView: { RoomInfoView: {
room: IRoom; room: ISubscription;
member: any; member: any;
rid: string; rid: string;
t: RoomType; t: SubscriptionType;
}; };
SelectListView: { SelectListView: {
data: any; data: any;
@ -54,11 +54,11 @@ export type ModalStackParamList = {
}; };
RoomMembersView: { RoomMembersView: {
rid: string; rid: string;
room: IRoom; room: ISubscription;
}; };
SearchMessagesView: { SearchMessagesView: {
rid: string; rid: string;
t: RoomType; t: SubscriptionType;
encrypted?: boolean; encrypted?: boolean;
showCloseModal?: boolean; showCloseModal?: boolean;
}; };
@ -84,18 +84,18 @@ export type ModalStackParamList = {
}; };
MessagesView: { MessagesView: {
rid: string; rid: string;
t: RoomType; t: SubscriptionType;
name: string; name: string;
}; };
AutoTranslateView: { AutoTranslateView: {
rid: string; rid: string;
room: IRoom; room: ISubscription;
}; };
DirectoryView: undefined; DirectoryView: undefined;
QueueListView: undefined; QueueListView: undefined;
NotificationPrefView: { NotificationPrefView: {
rid: string; rid: string;
room: IRoom; room: ISubscription;
}; };
ForwardLivechatView: { ForwardLivechatView: {
rid: string; rid: string;
@ -110,10 +110,10 @@ export type ModalStackParamList = {
scopeName: string; scopeName: string;
tags: string[]; tags: string[];
}; };
room: IRoom; room: ISubscription;
}; };
LivechatEditView: { LivechatEditView: {
room: IRoom; room: ISubscription;
roomUser: any; // TODO: Change roomUser: any; // TODO: Change
}; };
PickerView: { PickerView: {
@ -126,7 +126,7 @@ export type ModalStackParamList = {
}; };
ThreadMessagesView: { ThreadMessagesView: {
rid: string; rid: string;
t: RoomType; t: SubscriptionType;
}; };
TeamChannelsView: { TeamChannelsView: {
teamId: string; teamId: string;
@ -160,7 +160,7 @@ export type ModalStackParamList = {
teamId?: string; teamId?: string;
}; };
CreateDiscussionView: { CreateDiscussionView: {
channel: IRoom; channel: ISubscription;
message: IMessage; message: IMessage;
showCloseModal: boolean; showCloseModal: boolean;
}; };
@ -194,7 +194,7 @@ export type MasterDetailInsideStackParamList = {
isShareView?: boolean; isShareView?: boolean;
serverInfo: {}; serverInfo: {};
text: string; text: string;
room: IRoom; room: ISubscription;
thread: any; // TODO: Change thread: any; // TODO: Change
}; };
}; };

View File

@ -6,28 +6,28 @@ import { IOptionsField } from '../views/NotificationPreferencesView/options';
import { IServer } from '../definitions/IServer'; import { IServer } from '../definitions/IServer';
import { IAttachment } from '../definitions/IAttachment'; import { IAttachment } from '../definitions/IAttachment';
import { IMessage } from '../definitions/IMessage'; import { IMessage } from '../definitions/IMessage';
import { IRoom, RoomType } from '../definitions/IRoom'; import { ISubscription, SubscriptionType } from '../definitions/ISubscription';
export type ChatsStackParamList = { export type ChatsStackParamList = {
RoomsListView: undefined; RoomsListView: undefined;
RoomView: { RoomView: {
rid: string; rid: string;
t: RoomType; t: SubscriptionType;
tmid?: string; tmid?: string;
message?: string; message?: string;
name?: string; name?: string;
fname?: string; fname?: string;
prid?: string; prid?: string;
room: IRoom; room: ISubscription;
jumpToMessageId?: string; jumpToMessageId?: string;
jumpToThreadId?: string; jumpToThreadId?: string;
roomUserId?: string; roomUserId?: string;
}; };
RoomActionsView: { RoomActionsView: {
room: IRoom; room: ISubscription;
member: any; member: any;
rid: string; rid: string;
t: RoomType; t: SubscriptionType;
joined: boolean; joined: boolean;
}; };
SelectListView: { SelectListView: {
@ -41,21 +41,21 @@ export type ChatsStackParamList = {
isRadio?: boolean; isRadio?: boolean;
}; };
RoomInfoView: { RoomInfoView: {
room: IRoom; room: ISubscription;
member: any; member: any;
rid: string; rid: string;
t: RoomType; t: SubscriptionType;
}; };
RoomInfoEditView: { RoomInfoEditView: {
rid: string; rid: string;
}; };
RoomMembersView: { RoomMembersView: {
rid: string; rid: string;
room: IRoom; room: ISubscription;
}; };
SearchMessagesView: { SearchMessagesView: {
rid: string; rid: string;
t: RoomType; t: SubscriptionType;
encrypted?: boolean; encrypted?: boolean;
showCloseModal?: boolean; showCloseModal?: boolean;
}; };
@ -74,12 +74,12 @@ export type ChatsStackParamList = {
}; };
MessagesView: { MessagesView: {
rid: string; rid: string;
t: RoomType; t: SubscriptionType;
name: string; name: string;
}; };
AutoTranslateView: { AutoTranslateView: {
rid: string; rid: string;
room: IRoom; room: ISubscription;
}; };
DirectoryView: undefined; DirectoryView: undefined;
NotificationPrefView: { NotificationPrefView: {
@ -90,7 +90,7 @@ export type ChatsStackParamList = {
rid: string; rid: string;
}; };
LivechatEditView: { LivechatEditView: {
room: IRoom; room: ISubscription;
roomUser: any; // TODO: Change roomUser: any; // TODO: Change
}; };
PickerView: { PickerView: {
@ -103,7 +103,7 @@ export type ChatsStackParamList = {
}; };
ThreadMessagesView: { ThreadMessagesView: {
rid: string; rid: string;
t: RoomType; t: SubscriptionType;
}; };
TeamChannelsView: { TeamChannelsView: {
teamId: string; teamId: string;
@ -138,7 +138,7 @@ export type ChatsStackParamList = {
scopeName: string; scopeName: string;
tags: string[]; tags: string[];
}; };
room: IRoom; room: ISubscription;
}; };
}; };
@ -198,7 +198,7 @@ export type NewMessageStackParamList = {
teamId?: string; teamId?: string;
}; };
CreateDiscussionView: { CreateDiscussionView: {
channel: IRoom; channel: ISubscription;
message: IMessage; message: IMessage;
showCloseModal: boolean; showCloseModal: boolean;
}; };
@ -230,7 +230,7 @@ export type InsideStackParamList = {
isShareExtension: boolean; isShareExtension: boolean;
serverInfo: IServer; serverInfo: IServer;
text: string; text: string;
room: IRoom; room: ISubscription;
thread: any; // TODO: Change thread: any; // TODO: Change
}; };
ModalBlockView: { ModalBlockView: {

View File

@ -11,7 +11,7 @@ import { SWITCH_TRACK_COLOR, themes } from '../../constants/colors';
import { withTheme } from '../../theme'; import { withTheme } from '../../theme';
import SafeAreaView from '../../containers/SafeAreaView'; import SafeAreaView from '../../containers/SafeAreaView';
import { events, logEvent } from '../../utils/log'; import { events, logEvent } from '../../utils/log';
import { IRoom } from '../../definitions/IRoom'; import { ISubscription } from '../../definitions/ISubscription';
const styles = StyleSheet.create({ const styles = StyleSheet.create({
list: { list: {
@ -42,7 +42,7 @@ class AutoTranslateView extends React.Component<IAutoTranslateViewProps, any> {
if (room && room.observe) { if (room && room.observe) {
this.roomObservable = room.observe(); this.roomObservable = room.observe();
this.subscription = this.roomObservable.subscribe((changes: IRoom) => { this.subscription = this.roomObservable.subscribe((changes: ISubscription) => {
if (this.mounted) { if (this.mounted) {
const { selectedLanguage, enableAutoTranslate } = this.state; const { selectedLanguage, enableAutoTranslate } = this.state;
if (selectedLanguage !== changes.autoTranslateLanguage) { if (selectedLanguage !== changes.autoTranslateLanguage) {

View File

@ -20,7 +20,7 @@ import SafeAreaView from '../../containers/SafeAreaView';
import getThreadName from '../../lib/methods/getThreadName'; import getThreadName from '../../lib/methods/getThreadName';
import styles from './styles'; import styles from './styles';
import { ChatsStackParamList } from '../../stacks/types'; import { ChatsStackParamList } from '../../stacks/types';
import { IRoom, RoomType } from '../../definitions/IRoom'; import { ISubscription, SubscriptionType } from '../../definitions/ISubscription';
interface IMessagesViewProps { interface IMessagesViewProps {
user: { user: {
@ -40,10 +40,10 @@ interface IMessagesViewProps {
} }
interface IRoomInfoParam { interface IRoomInfoParam {
room: IRoom; room: ISubscription;
member: any; member: any;
rid: string; rid: string;
t: RoomType; t: SubscriptionType;
joined: boolean; joined: boolean;
} }
@ -72,13 +72,13 @@ interface IMessageItem {
interface IParams { interface IParams {
rid: string; rid: string;
t: RoomType; t: SubscriptionType;
tmid?: string; tmid?: string;
message?: string; message?: string;
name?: string; name?: string;
fname?: string; fname?: string;
prid?: string; prid?: string;
room: IRoom; room: ISubscription;
jumpToMessageId?: string; jumpToMessageId?: string;
jumpToThreadId?: string; jumpToThreadId?: string;
roomUserId?: string; roomUserId?: string;
@ -86,7 +86,7 @@ interface IParams {
class MessagesView extends React.Component<IMessagesViewProps, any> { class MessagesView extends React.Component<IMessagesViewProps, any> {
private rid: string; private rid: string;
private t: RoomType; private t: SubscriptionType;
private content: any; private content: any;
private room: any; private room: any;
@ -158,7 +158,7 @@ class MessagesView extends React.Component<IMessagesViewProps, any> {
...params, ...params,
tmid: item.tmid, tmid: item.tmid,
name: await getThreadName(this.rid, item.tmid, item._id), name: await getThreadName(this.rid, item.tmid, item._id),
t: RoomType.THREAD t: SubscriptionType.THREAD
}; };
navigation.push('RoomView', params); navigation.push('RoomView', params);
} else { } else {

View File

@ -6,7 +6,7 @@ import { Q } from '@nozbe/watermelondb';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { dequal } from 'dequal'; import { dequal } from 'dequal';
import { IRoom, RoomType } from '../../definitions/IRoom'; import { ISubscription, SubscriptionType } from '../../definitions/ISubscription';
import { IAttachment } from '../../definitions/IAttachment'; import { IAttachment } from '../../definitions/IAttachment';
import RCTextInput from '../../containers/TextInput'; import RCTextInput from '../../containers/TextInput';
import ActivityIndicator from '../../containers/ActivityIndicator'; import ActivityIndicator from '../../containers/ActivityIndicator';
@ -42,10 +42,10 @@ interface ISearchMessagesViewState {
} }
interface IRoomInfoParam { interface IRoomInfoParam {
room: IRoom; room: ISubscription;
member: any; member: any;
rid: string; rid: string;
t: RoomType; t: SubscriptionType;
joined: boolean; joined: boolean;
} }

View File

@ -28,7 +28,7 @@ import Preview from './Preview';
import Header from './Header'; import Header from './Header';
import styles from './styles'; import styles from './styles';
import { IAttachment } from './interfaces'; import { IAttachment } from './interfaces';
import { IRoom } from '../../definitions/IRoom'; import { ISubscription } from '../../definitions/ISubscription';
interface IShareViewState { interface IShareViewState {
selected: IAttachment; selected: IAttachment;
@ -36,7 +36,7 @@ interface IShareViewState {
readOnly: boolean; readOnly: boolean;
attachments: IAttachment[]; attachments: IAttachment[];
text: string; text: string;
room: IRoom; room: ISubscription;
thread: any; // change thread: any; // change
maxFileSize: number; maxFileSize: number;
mediaAllowList: number; mediaAllowList: number;