diff --git a/app/containers/message/Reply.tsx b/app/containers/message/Reply.tsx index fbc8984fc..8d8126050 100644 --- a/app/containers/message/Reply.tsx +++ b/app/containers/message/Reply.tsx @@ -13,6 +13,7 @@ import { themes } from '../../constants/colors'; import MessageContext from './Context'; import { fileDownloadAndPreview } from '../../utils/fileDownload'; import { formatAttachmentUrl } from '../../lib/utils'; +import { IAttachment } from '../../definitions/IAttachment'; import RCActivityIndicator from '../ActivityIndicator'; const styles = StyleSheet.create({ @@ -90,43 +91,26 @@ const styles = StyleSheet.create({ } }); -interface IMessageReplyAttachment { - author_name: string; - message_link: string; - ts: string; - text: string; - title: string; - short: boolean; - value: string; - title_link: string; - author_link: string; - type: string; - color: string; - description: string; - fields: IMessageReplyAttachment[]; - thumb_url: string; -} - interface IMessageTitle { - attachment: Partial; + attachment: IAttachment; timeFormat: string; theme: string; } interface IMessageDescription { - attachment: Partial; + attachment: IAttachment; getCustomEmoji: Function; theme: string; } interface IMessageFields { - attachment: Partial; + attachment: IAttachment; theme: string; getCustomEmoji: Function; } interface IMessageReply { - attachment: IMessageReplyAttachment; + attachment: IAttachment; timeFormat: string; index: number; theme: string; @@ -198,7 +182,7 @@ const Fields = React.memo( {field.title} {/* @ts-ignore*/} void; + +export interface ITranslations { + _id: string; + language: string; + value: string; +} + +export interface ILastMessage { + _id: string; + rid: string; + tshow: boolean; + tmid: string; + msg: string; + ts: Date; + u: IUserMessage; + _updatedAt: Date; + urls: string[]; + mentions: IUserMention[]; + channels: IUserChannel[]; + md: MarkdownAST; + attachments: IAttachment[]; + reactions: IReaction[]; + unread: boolean; + status: boolean; +} + +export interface IMessage { + msg?: string; + t?: SubscriptionType; + ts: Date; + u: IUserMessage; + alias: string; + parseUrls: boolean; + groupable?: boolean; + avatar?: string; + emoji?: string; + attachments?: IAttachment[]; + urls?: string[]; + _updatedAt: Date; + status?: number; + pinned?: boolean; + starred?: boolean; + editedBy?: IEditedBy; + reactions?: IReaction[]; + role?: string; + drid?: string; + dcount?: number; + dlm?: Date; + tmid?: string; + tcount?: number; + tlm?: Date; + replies?: string[]; + mentions?: IUserMention[]; + channels?: IUserChannel[]; + unread?: boolean; + autoTranslate?: boolean; + translations?: ITranslations[]; + tmsg?: string; + blocks?: any; + e2e?: string; + tshow?: boolean; + md?: MarkdownAST; + subscription: { id: string }; +} + +export type TMessageModel = IMessage & Model; diff --git a/app/definitions/IPermission.ts b/app/definitions/IPermission.ts new file mode 100644 index 000000000..0ccc13465 --- /dev/null +++ b/app/definitions/IPermission.ts @@ -0,0 +1,9 @@ +import Model from '@nozbe/watermelondb/Model'; + +export interface IPermission { + id: string; + roles: string[]; + _updatedAt: Date; +} + +export type TPermissionModel = IPermission & Model; diff --git a/app/definitions/IReaction.ts b/app/definitions/IReaction.ts new file mode 100644 index 000000000..a28f5d06e --- /dev/null +++ b/app/definitions/IReaction.ts @@ -0,0 +1,5 @@ +export interface IReaction { + _id: string; + emoji: string; + usernames: string[]; +} diff --git a/app/definitions/IRocketChatRecord.ts b/app/definitions/IRocketChatRecord.ts deleted file mode 100644 index 48d91fa84..000000000 --- a/app/definitions/IRocketChatRecord.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IRocketChatRecord { - id: string; - updatedAt: Date; -} diff --git a/app/definitions/IRole.ts b/app/definitions/IRole.ts new file mode 100644 index 000000000..1fec42150 --- /dev/null +++ b/app/definitions/IRole.ts @@ -0,0 +1,8 @@ +import Model from '@nozbe/watermelondb/Model'; + +export interface IRole { + id: string; + description?: string; +} + +export type TRoleModel = IRole & Model; diff --git a/app/definitions/IRoom.ts b/app/definitions/IRoom.ts index 786c1d7c8..d55cf34a5 100644 --- a/app/definitions/IRoom.ts +++ b/app/definitions/IRoom.ts @@ -1,27 +1,20 @@ -import { IRocketChatRecord } from './IRocketChatRecord'; +import Model from '@nozbe/watermelondb/Model'; -export enum RoomType { - GROUP = 'p', - DIRECT = 'd', - CHANNEL = 'c', - OMNICHANNEL = 'l', - THREAD = 'thread' +import { IServedBy } from './IServedBy'; + +export interface IRoom { + id: string; + customFields: string[]; + broadcast: boolean; + encrypted: boolean; + ro: boolean; + v?: string[]; + servedBy?: IServedBy; + departmentId?: string; + livechatData?: any; + tags?: string[]; + e2eKeyId?: string; + avatarETag?: string; } -export interface IRoom extends IRocketChatRecord { - 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; -} +export type TRoomModel = IRoom & Model; diff --git a/app/definitions/IServedBy.ts b/app/definitions/IServedBy.ts new file mode 100644 index 000000000..4bf31aad2 --- /dev/null +++ b/app/definitions/IServedBy.ts @@ -0,0 +1,5 @@ +export interface IServedBy { + _id: string; + username: string; + ts: Date; +} diff --git a/app/definitions/IServer.ts b/app/definitions/IServer.ts index 534a29c9c..014a2702b 100644 --- a/app/definitions/IServer.ts +++ b/app/definitions/IServer.ts @@ -1,3 +1,5 @@ +import Model from '@nozbe/watermelondb/Model'; + export interface IServer { name: string; iconURL: string; @@ -14,3 +16,5 @@ export interface IServer { enterpriseModules: string; E2E_Enable: boolean; } + +export type TServerModel = IServer & Model; diff --git a/app/definitions/IServerHistory.ts b/app/definitions/IServerHistory.ts new file mode 100644 index 000000000..296cba4ed --- /dev/null +++ b/app/definitions/IServerHistory.ts @@ -0,0 +1,10 @@ +import Model from '@nozbe/watermelondb/Model'; + +export interface IServerHistory { + id: string; + url: string; + username: string; + updatedAt: Date; +} + +export type TServerHistory = IServerHistory & Model; diff --git a/app/definitions/ISettings.ts b/app/definitions/ISettings.ts new file mode 100644 index 000000000..1fbb63ac8 --- /dev/null +++ b/app/definitions/ISettings.ts @@ -0,0 +1,12 @@ +import Model from '@nozbe/watermelondb/Model'; + +export interface ISettings { + id: string; + valueAsString?: string; + valueAsBoolean?: boolean; + valueAsNumber?: number; + valueAsArray?: string[]; + _updatedAt?: Date; +} + +export type TSettingsModel = ISettings & Model; diff --git a/app/definitions/ISlashCommand.ts b/app/definitions/ISlashCommand.ts new file mode 100644 index 000000000..a859448df --- /dev/null +++ b/app/definitions/ISlashCommand.ts @@ -0,0 +1,12 @@ +import Model from '@nozbe/watermelondb/Model'; + +export interface ISlashCommand { + id: string; + params?: string; + description?: string; + clientOnly?: boolean; + providesPreview?: boolean; + appId?: string; +} + +export type TSlashCommandModel = ISlashCommand & Model; diff --git a/app/definitions/ISubscription.ts b/app/definitions/ISubscription.ts new file mode 100644 index 000000000..5f561edfb --- /dev/null +++ b/app/definitions/ISubscription.ts @@ -0,0 +1,89 @@ +import Model from '@nozbe/watermelondb/Model'; +import Relation from '@nozbe/watermelondb/Relation'; + +import { ILastMessage, TMessageModel } from './IMessage'; +import { IServedBy } from './IServedBy'; +import { TThreadModel } from './IThread'; +import { TThreadMessageModel } from './IThreadMessage'; +import { TUploadModel } from './IUpload'; + +export enum SubscriptionType { + GROUP = 'p', + DIRECT = 'd', + CHANNEL = 'c', + OMNICHANNEL = 'l', + THREAD = 'thread' +} + +export interface IVisitor { + _id: string; + username: string; + token: string; + status: string; + lastMessageTs: Date; +} + +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; + muted?: string[]; + ignored?: string[]; + broadcast?: boolean; + prid?: string; + draftMessage?: string; + lastThreadSync?: Date; + jitsiTimeout?: number; + autoTranslate?: boolean; + autoTranslateLanguage: string; + lastMessage?: ILastMessage; + hideUnreadStatus?: boolean; + sysMes?: string[] | boolean; + uids?: string[]; + usernames?: string[]; + visitor?: IVisitor; + departmentId?: string; + servedBy?: IServedBy; + livechatData?: any; + tags?: string[]; + E2EKey?: string; + encrypted?: boolean; + e2eKeyId?: string; + avatarETag?: string; + teamId?: string; + teamMain?: boolean; + // https://nozbe.github.io/WatermelonDB/Relation.html#relation-api + messages: Relation; + threads: Relation; + threadMessages: Relation; + uploads: Relation; +} + +export type TSubscriptionModel = ISubscription & Model; diff --git a/app/definitions/IThread.ts b/app/definitions/IThread.ts new file mode 100644 index 000000000..ad151283b --- /dev/null +++ b/app/definitions/IThread.ts @@ -0,0 +1,78 @@ +import Model from '@nozbe/watermelondb/Model'; +import { MarkdownAST } from '@rocket.chat/message-parser'; + +import { IAttachment } from './IAttachment'; +import { IEditedBy, IUserChannel, IUserMention, IUserMessage } from './IMessage'; +import { IReaction } from './IReaction'; +import { SubscriptionType } from './ISubscription'; + +export interface IUrl { + title: string; + description: string; + image: string; + url: string; +} + +interface IFileThread { + _id: string; + name: string; + type: string; +} + +export interface IThreadResult { + _id: string; + rid: string; + ts: string; + msg: string; + file?: IFileThread; + files?: IFileThread[]; + groupable?: boolean; + attachments?: IAttachment[]; + md?: MarkdownAST; + u: IUserMessage; + _updatedAt: string; + urls: IUrl[]; + mentions: IUserMention[]; + channels: IUserChannel[]; + replies: string[]; + tcount: number; + tlm: string; +} + +export interface IThread { + id: string; + msg?: string; + t?: SubscriptionType; + rid: string; + _updatedAt: Date; + ts: Date; + u: IUserMessage; + alias?: string; + parseUrls?: boolean; + groupable?: boolean; + avatar?: string; + emoji?: string; + attachments?: IAttachment[]; + urls?: IUrl[]; + status?: number; + pinned?: boolean; + starred?: boolean; + editedBy?: IEditedBy; + reactions?: IReaction[]; + role?: string; + drid?: string; + dcount?: number; + dlm?: number; + tmid?: string; + tcount?: number; + tlm?: Date; + replies?: string[]; + mentions?: IUserMention[]; + channels?: IUserChannel[]; + unread?: boolean; + autoTranslate?: boolean; + translations?: any; + e2e?: string; +} + +export type TThreadModel = IThread & Model; diff --git a/app/definitions/IThreadMessage.ts b/app/definitions/IThreadMessage.ts new file mode 100644 index 000000000..c773e4dc5 --- /dev/null +++ b/app/definitions/IThreadMessage.ts @@ -0,0 +1,44 @@ +import Model from '@nozbe/watermelondb/Model'; + +import { IAttachment } from './IAttachment'; +import { IEditedBy, ITranslations, IUserChannel, IUserMention, IUserMessage } from './IMessage'; +import { IReaction } from './IReaction'; +import { SubscriptionType } from './ISubscription'; + +export interface IThreadMessage { + msg?: string; + t?: SubscriptionType; + rid: string; + ts: Date; + u: IUserMessage; + alias?: string; + parseUrls?: boolean; + groupable?: boolean; + avatar?: string; + emoji?: string; + attachments?: IAttachment[]; + urls?: string[]; + _updatedAt?: Date; + status?: number; + pinned?: boolean; + starred?: boolean; + editedBy?: IEditedBy; + reactions?: IReaction[]; + role?: string; + drid?: string; + dcount?: number; + dlm?: Date; + tmid?: string; + tcount?: number; + tlm?: Date; + replies?: string[]; + mentions?: IUserMention[]; + channels?: IUserChannel[]; + unread?: boolean; + autoTranslate?: boolean; + translations?: ITranslations[]; + e2e?: string; + subscription?: { id: string }; +} + +export type TThreadMessageModel = IThreadMessage & Model; diff --git a/app/definitions/IUpload.ts b/app/definitions/IUpload.ts new file mode 100644 index 000000000..6ff03c519 --- /dev/null +++ b/app/definitions/IUpload.ts @@ -0,0 +1,16 @@ +import Model from '@nozbe/watermelondb/Model'; + +export interface IUpload { + id: string; + path?: string; + name?: string; + description?: string; + size: number; + type?: string; + store?: string; + progress: number; + error: boolean; + subscription: { id: string }; +} + +export type TUploadModel = IUpload & Model; diff --git a/app/definitions/IUser.ts b/app/definitions/IUser.ts new file mode 100644 index 000000000..012ef8087 --- /dev/null +++ b/app/definitions/IUser.ts @@ -0,0 +1,10 @@ +import Model from '@nozbe/watermelondb/Model'; + +export interface IUser { + _id: string; + name?: string; + username: string; + avatarETag?: string; +} + +export type TUserModel = IUser & Model; diff --git a/app/navigationTypes.ts b/app/navigationTypes.ts index 568b75d0f..cbf17f42e 100644 --- a/app/navigationTypes.ts +++ b/app/navigationTypes.ts @@ -1,6 +1,6 @@ import { NavigatorScreenParams } from '@react-navigation/core'; -import { IRoom } from './definitions/IRoom'; +import { ISubscription } from './definitions/ISubscription'; import { IServer } from './definitions/IServer'; import { IAttachment } from './definitions/IAttachment'; import { MasterDetailInsideStackParamList } from './stacks/MasterDetailStack/types'; @@ -28,7 +28,7 @@ export type ShareInsideStackParamList = { isShareExtension: boolean; serverInfo: IServer; text: string; - room: IRoom; + room: ISubscription; thread: any; // TODO: Change }; SelectServerView: undefined; diff --git a/app/stacks/MasterDetailStack/types.ts b/app/stacks/MasterDetailStack/types.ts index 202ad6014..242c13bab 100644 --- a/app/stacks/MasterDetailStack/types.ts +++ b/app/stacks/MasterDetailStack/types.ts @@ -3,18 +3,18 @@ import { NavigatorScreenParams } from '@react-navigation/core'; import { IAttachment } from '../../definitions/IAttachment'; import { IMessage } from '../../definitions/IMessage'; -import { IRoom, RoomType } from '../../definitions/IRoom'; +import { ISubscription, SubscriptionType } from '../../definitions/ISubscription'; export type MasterDetailChatsStackParamList = { RoomView: { rid: string; - t: RoomType; + t: SubscriptionType; tmid?: string; message?: string; name?: string; fname?: string; prid?: string; - room: IRoom; + room: ISubscription; jumpToMessageId?: string; jumpToThreadId?: string; roomUserId?: string; @@ -27,17 +27,17 @@ export type MasterDetailDrawerParamList = { export type ModalStackParamList = { RoomActionsView: { - room: IRoom; + room: ISubscription; member: any; rid: string; - t: RoomType; + t: SubscriptionType; joined: boolean; }; RoomInfoView: { - room: IRoom; + room: ISubscription; member: any; rid: string; - t: RoomType; + t: SubscriptionType; }; SelectListView: { data: any; @@ -54,11 +54,11 @@ export type ModalStackParamList = { }; RoomMembersView: { rid: string; - room: IRoom; + room: ISubscription; }; SearchMessagesView: { rid: string; - t: RoomType; + t: SubscriptionType; encrypted?: boolean; showCloseModal?: boolean; }; @@ -84,18 +84,18 @@ export type ModalStackParamList = { }; MessagesView: { rid: string; - t: RoomType; + t: SubscriptionType; name: string; }; AutoTranslateView: { rid: string; - room: IRoom; + room: ISubscription; }; DirectoryView: undefined; QueueListView: undefined; NotificationPrefView: { rid: string; - room: IRoom; + room: ISubscription; }; ForwardLivechatView: { rid: string; @@ -110,10 +110,10 @@ export type ModalStackParamList = { scopeName: string; tags: string[]; }; - room: IRoom; + room: ISubscription; }; LivechatEditView: { - room: IRoom; + room: ISubscription; roomUser: any; // TODO: Change }; PickerView: { @@ -126,7 +126,7 @@ export type ModalStackParamList = { }; ThreadMessagesView: { rid: string; - t: RoomType; + t: SubscriptionType; }; TeamChannelsView: { teamId: string; @@ -160,7 +160,7 @@ export type ModalStackParamList = { teamId?: string; }; CreateDiscussionView: { - channel: IRoom; + channel: ISubscription; message: IMessage; showCloseModal: boolean; }; @@ -194,7 +194,7 @@ export type MasterDetailInsideStackParamList = { isShareView?: boolean; serverInfo: {}; text: string; - room: IRoom; + room: ISubscription; thread: any; // TODO: Change }; }; diff --git a/app/stacks/types.ts b/app/stacks/types.ts index 3107c69ce..daf366d92 100644 --- a/app/stacks/types.ts +++ b/app/stacks/types.ts @@ -6,28 +6,28 @@ import { IOptionsField } from '../views/NotificationPreferencesView/options'; import { IServer } from '../definitions/IServer'; import { IAttachment } from '../definitions/IAttachment'; import { IMessage } from '../definitions/IMessage'; -import { IRoom, RoomType } from '../definitions/IRoom'; +import { ISubscription, SubscriptionType, TSubscriptionModel } from '../definitions/ISubscription'; export type ChatsStackParamList = { RoomsListView: undefined; RoomView: { rid: string; - t: RoomType; + t: SubscriptionType; tmid?: string; message?: string; name?: string; fname?: string; prid?: string; - room: IRoom; + room: ISubscription; jumpToMessageId?: string; jumpToThreadId?: string; roomUserId?: string; }; RoomActionsView: { - room: IRoom; + room: ISubscription; member: any; rid: string; - t: RoomType; + t: SubscriptionType; joined: boolean; }; SelectListView: { @@ -41,21 +41,21 @@ export type ChatsStackParamList = { isRadio?: boolean; }; RoomInfoView: { - room: IRoom; + room: ISubscription; member: any; rid: string; - t: RoomType; + t: SubscriptionType; }; RoomInfoEditView: { rid: string; }; RoomMembersView: { rid: string; - room: IRoom; + room: ISubscription; }; SearchMessagesView: { rid: string; - t: RoomType; + t: SubscriptionType; encrypted?: boolean; showCloseModal?: boolean; }; @@ -74,12 +74,12 @@ export type ChatsStackParamList = { }; MessagesView: { rid: string; - t: RoomType; + t: SubscriptionType; name: string; }; AutoTranslateView: { rid: string; - room: IRoom; + room: TSubscriptionModel; }; DirectoryView: undefined; NotificationPrefView: { @@ -90,7 +90,7 @@ export type ChatsStackParamList = { rid: string; }; LivechatEditView: { - room: IRoom; + room: ISubscription; roomUser: any; // TODO: Change }; PickerView: { @@ -103,7 +103,7 @@ export type ChatsStackParamList = { }; ThreadMessagesView: { rid: string; - t: RoomType; + t: SubscriptionType; }; TeamChannelsView: { teamId: string; @@ -138,7 +138,7 @@ export type ChatsStackParamList = { scopeName: string; tags: string[]; }; - room: IRoom; + room: ISubscription; }; }; @@ -198,7 +198,7 @@ export type NewMessageStackParamList = { teamId?: string; }; CreateDiscussionView: { - channel: IRoom; + channel: ISubscription; message: IMessage; showCloseModal: boolean; }; @@ -230,7 +230,7 @@ export type InsideStackParamList = { isShareExtension: boolean; serverInfo: IServer; text: string; - room: IRoom; + room: ISubscription; thread: any; // TODO: Change }; ModalBlockView: { diff --git a/app/views/AutoTranslateView/index.tsx b/app/views/AutoTranslateView/index.tsx index f840ca12a..954426891 100644 --- a/app/views/AutoTranslateView/index.tsx +++ b/app/views/AutoTranslateView/index.tsx @@ -11,7 +11,7 @@ import { SWITCH_TRACK_COLOR, themes } from '../../constants/colors'; import { withTheme } from '../../theme'; import SafeAreaView from '../../containers/SafeAreaView'; import { events, logEvent } from '../../utils/log'; -import { IRoom } from '../../definitions/IRoom'; +import { ISubscription } from '../../definitions/ISubscription'; const styles = StyleSheet.create({ list: { @@ -42,7 +42,7 @@ class AutoTranslateView extends React.Component { if (room && room.observe) { this.roomObservable = room.observe(); - this.subscription = this.roomObservable.subscribe((changes: IRoom) => { + this.subscription = this.roomObservable.subscribe((changes: ISubscription) => { if (this.mounted) { const { selectedLanguage, enableAutoTranslate } = this.state; if (selectedLanguage !== changes.autoTranslateLanguage) { diff --git a/app/views/MessagesView/index.tsx b/app/views/MessagesView/index.tsx index 14532051b..c9e3d601d 100644 --- a/app/views/MessagesView/index.tsx +++ b/app/views/MessagesView/index.tsx @@ -20,7 +20,7 @@ import SafeAreaView from '../../containers/SafeAreaView'; import getThreadName from '../../lib/methods/getThreadName'; import styles from './styles'; import { ChatsStackParamList } from '../../stacks/types'; -import { IRoom, RoomType } from '../../definitions/IRoom'; +import { ISubscription, SubscriptionType } from '../../definitions/ISubscription'; interface IMessagesViewProps { user: { @@ -40,10 +40,10 @@ interface IMessagesViewProps { } interface IRoomInfoParam { - room: IRoom; + room: ISubscription; member: any; rid: string; - t: RoomType; + t: SubscriptionType; joined: boolean; } @@ -72,13 +72,13 @@ interface IMessageItem { interface IParams { rid: string; - t: RoomType; + t: SubscriptionType; tmid?: string; message?: string; name?: string; fname?: string; prid?: string; - room: IRoom; + room: ISubscription; jumpToMessageId?: string; jumpToThreadId?: string; roomUserId?: string; @@ -86,7 +86,7 @@ interface IParams { class MessagesView extends React.Component { private rid: string; - private t: RoomType; + private t: SubscriptionType; private content: any; private room: any; @@ -158,7 +158,7 @@ class MessagesView extends React.Component { ...params, tmid: item.tmid, name: await getThreadName(this.rid, item.tmid, item._id), - t: RoomType.THREAD + t: SubscriptionType.THREAD }; navigation.push('RoomView', params); } else { diff --git a/app/views/NewServerView/ServerInput/Item.tsx b/app/views/NewServerView/ServerInput/Item.tsx index 9fb44719e..cc8a9e3a7 100644 --- a/app/views/NewServerView/ServerInput/Item.tsx +++ b/app/views/NewServerView/ServerInput/Item.tsx @@ -6,7 +6,7 @@ import { themes } from '../../../constants/colors'; import { CustomIcon } from '../../../lib/Icons'; import sharedStyles from '../../Styles'; import Touch from '../../../utils/touch'; -import { IServer } from '../index'; +import { TServerHistory } from '../../../definitions/IServerHistory'; const styles = StyleSheet.create({ container: { @@ -28,10 +28,10 @@ const styles = StyleSheet.create({ }); interface IItem { - item: IServer; + item: TServerHistory; theme: string; onPress(url: string): void; - onDelete(item: IServer): void; + onDelete(item: TServerHistory): void; } const Item = ({ item, theme, onPress, onDelete }: IItem): JSX.Element => ( diff --git a/app/views/NewServerView/ServerInput/index.tsx b/app/views/NewServerView/ServerInput/index.tsx index 1da151367..e2b14fd69 100644 --- a/app/views/NewServerView/ServerInput/index.tsx +++ b/app/views/NewServerView/ServerInput/index.tsx @@ -5,8 +5,8 @@ import TextInput from '../../../containers/TextInput'; import * as List from '../../../containers/List'; import { themes } from '../../../constants/colors'; import I18n from '../../../i18n'; +import { TServerHistory } from '../../../definitions/IServerHistory'; import Item from './Item'; -import { IServer } from '../index'; const styles = StyleSheet.create({ container: { @@ -33,8 +33,8 @@ interface IServerInput extends TextInputProps { theme: string; serversHistory: any[]; onSubmit(): void; - onDelete(item: IServer): void; - onPressServerHistory(serverHistory: IServer): void; + onDelete(item: TServerHistory): void; + onPressServerHistory(serverHistory: TServerHistory): void; } const ServerInput = ({ diff --git a/app/views/NewServerView/index.tsx b/app/views/NewServerView/index.tsx index aaacdf90f..53594d9c0 100644 --- a/app/views/NewServerView/index.tsx +++ b/app/views/NewServerView/index.tsx @@ -8,7 +8,6 @@ import { TouchableOpacity } from 'react-native-gesture-handler'; import Orientation from 'react-native-orientation-locker'; import { StackNavigationProp } from '@react-navigation/stack'; import { Dispatch } from 'redux'; -import Model from '@nozbe/watermelondb/Model'; import UserPreferences from '../../lib/userPreferences'; import EventEmitter from '../../utils/events'; @@ -34,6 +33,7 @@ import { verticalScale, moderateScale } from '../../utils/scaling'; import { withDimensions } from '../../dimensions'; import ServerInput from './ServerInput'; import { OutsideParamList } from '../../stacks/types'; +import { TServerHistory } from '../../definitions/IServerHistory'; const styles = StyleSheet.create({ onboardingImage: { @@ -68,11 +68,6 @@ const styles = StyleSheet.create({ } }); -export interface IServer extends Model { - url: string; - username: string; -} - interface INewServerView { navigation: StackNavigationProp; theme: string; @@ -90,7 +85,7 @@ interface IState { text: string; connectingOpen: boolean; certificate: any; - serversHistory: IServer[]; + serversHistory: TServerHistory[]; } interface ISubmitParams { @@ -166,7 +161,7 @@ class NewServerView extends React.Component { const likeString = sanitizeLikeString(text); whereClause = [...whereClause, Q.where('url', Q.like(`%${likeString}%`))]; } - const serversHistory = (await serversHistoryCollection.query(...whereClause).fetch()) as IServer[]; + const serversHistory = (await serversHistoryCollection.query(...whereClause).fetch()) as TServerHistory[]; this.setState({ serversHistory }); } catch { // Do nothing @@ -190,7 +185,7 @@ class NewServerView extends React.Component { connectServer(server); }; - onPressServerHistory = (serverHistory: IServer) => { + onPressServerHistory = (serverHistory: TServerHistory) => { this.setState({ text: serverHistory.url }, () => this.submit({ fromServerHistory: true, username: serverHistory?.username })); }; @@ -283,14 +278,14 @@ class NewServerView extends React.Component { }); }; - deleteServerHistory = async (item: IServer) => { + deleteServerHistory = async (item: TServerHistory) => { const db = database.servers; try { await db.write(async () => { await item.destroyPermanently(); }); this.setState((prevstate: IState) => ({ - serversHistory: prevstate.serversHistory.filter((server: IServer) => server.id !== item.id) + serversHistory: prevstate.serversHistory.filter((server: TServerHistory) => server.id !== item.id) })); } catch { // Nothing diff --git a/app/views/SearchMessagesView/index.tsx b/app/views/SearchMessagesView/index.tsx index a85df6745..7bc3c1738 100644 --- a/app/views/SearchMessagesView/index.tsx +++ b/app/views/SearchMessagesView/index.tsx @@ -6,7 +6,7 @@ import { Q } from '@nozbe/watermelondb'; import { connect } from 'react-redux'; import { dequal } from 'dequal'; -import { IRoom, RoomType } from '../../definitions/IRoom'; +import { ISubscription, SubscriptionType } from '../../definitions/ISubscription'; import { IAttachment } from '../../definitions/IAttachment'; import RCTextInput from '../../containers/TextInput'; import ActivityIndicator from '../../containers/ActivityIndicator'; @@ -42,10 +42,10 @@ interface ISearchMessagesViewState { } interface IRoomInfoParam { - room: IRoom; + room: ISubscription; member: any; rid: string; - t: RoomType; + t: SubscriptionType; joined: boolean; } diff --git a/app/views/ShareView/index.tsx b/app/views/ShareView/index.tsx index a3ad287aa..d77ba022b 100644 --- a/app/views/ShareView/index.tsx +++ b/app/views/ShareView/index.tsx @@ -28,7 +28,7 @@ import Preview from './Preview'; import Header from './Header'; import styles from './styles'; import { IAttachment } from './interfaces'; -import { IRoom } from '../../definitions/IRoom'; +import { ISubscription } from '../../definitions/ISubscription'; interface IShareViewState { selected: IAttachment; @@ -36,7 +36,7 @@ interface IShareViewState { readOnly: boolean; attachments: IAttachment[]; text: string; - room: IRoom; + room: ISubscription; thread: any; // change maxFileSize: number; mediaAllowList: number;