forked from EVOgeek/Vmeda.Online
		
	MOBILE-3109 chat: Add return types to chat
This commit is contained in:
		
							parent
							
								
									334b28bda2
								
							
						
					
					
						commit
						49deffa9dd
					
				| @ -16,7 +16,7 @@ import { Component, Injector } from '@angular/core'; | ||||
| import { NavController } from 'ionic-angular'; | ||||
| import { CoreCourseModuleMainActivityComponent } from '@core/course/classes/main-activity-component'; | ||||
| import { CoreTimeUtilsProvider } from '@providers/utils/time'; | ||||
| import { AddonModChatProvider } from '../../providers/chat'; | ||||
| import { AddonModChatProvider, AddonModChatChat } from '../../providers/chat'; | ||||
| 
 | ||||
| /** | ||||
|  * Component that displays a chat. | ||||
| @ -29,7 +29,7 @@ export class AddonModChatIndexComponent extends CoreCourseModuleMainActivityComp | ||||
|     component = AddonModChatProvider.COMPONENT; | ||||
|     moduleName = 'chat'; | ||||
| 
 | ||||
|     chat: any; | ||||
|     chat: AddonModChatChat; | ||||
|     chatInfo: any; | ||||
| 
 | ||||
|     protected title: string; | ||||
| @ -66,7 +66,7 @@ export class AddonModChatIndexComponent extends CoreCourseModuleMainActivityComp | ||||
|     protected fetchContent(refresh: boolean = false, sync: boolean = false, showErrors: boolean = false): Promise<any> { | ||||
|         return this.chatProvider.getChat(this.courseId, this.module.id).then((chat) => { | ||||
|             this.chat = chat; | ||||
|             this.description = chat.intro || chat.description; | ||||
|             this.description = chat.intro; | ||||
| 
 | ||||
|             const now = this.timeUtils.timestamp(); | ||||
|             const span = chat.chattime - now; | ||||
|  | ||||
| @ -20,7 +20,7 @@ import { CoreLoggerProvider } from '@providers/logger'; | ||||
| import { CoreSitesProvider } from '@providers/sites'; | ||||
| import { CoreDomUtilsProvider } from '@providers/utils/dom'; | ||||
| import { CoreTextUtilsProvider } from '@providers/utils/text'; | ||||
| import { AddonModChatProvider } from '../../providers/chat'; | ||||
| import { AddonModChatProvider, AddonModChatMessageWithUserData } from '../../providers/chat'; | ||||
| import { Network } from '@ionic-native/network'; | ||||
| import * as moment from 'moment'; | ||||
| 
 | ||||
| @ -37,7 +37,7 @@ export class AddonModChatChatPage { | ||||
| 
 | ||||
|     loaded = false; | ||||
|     title: string; | ||||
|     messages = []; | ||||
|     messages: AddonModChatMessageWithUserData[] = []; | ||||
|     newMessage: string; | ||||
|     polling: any; | ||||
|     isOnline: boolean; | ||||
| @ -46,7 +46,7 @@ export class AddonModChatChatPage { | ||||
|     protected logger; | ||||
|     protected courseId: number; | ||||
|     protected chatId: number; | ||||
|     protected sessionId: number; | ||||
|     protected sessionId: string; | ||||
|     protected lastTime = 0; | ||||
|     protected oldContentHeight = 0; | ||||
|     protected onlineObserver: any; | ||||
| @ -131,9 +131,9 @@ export class AddonModChatChatPage { | ||||
|     /** | ||||
|      * Convenience function to login the user. | ||||
|      * | ||||
|      * @return Resolved when done. | ||||
|      * @return Promise resolved when done. | ||||
|      */ | ||||
|     protected loginUser(): Promise<any> { | ||||
|     protected loginUser(): Promise<void> { | ||||
|         return this.chatProvider.loginUser(this.chatId).then((sessionId) => { | ||||
|             this.sessionId = sessionId; | ||||
|         }); | ||||
| @ -144,12 +144,12 @@ export class AddonModChatChatPage { | ||||
|      * | ||||
|      * @return Promise resolved when done. | ||||
|      */ | ||||
|     protected fetchMessages(): Promise<any> { | ||||
|     protected fetchMessages(): Promise<void> { | ||||
|         return this.chatProvider.getLatestMessages(this.sessionId, this.lastTime).then((messagesInfo) => { | ||||
|             this.lastTime = messagesInfo.chatnewlasttime || 0; | ||||
| 
 | ||||
|             return this.chatProvider.getMessagesUserData(messagesInfo.messages, this.courseId).then((messages) => { | ||||
|                 this.messages = this.messages.concat(messages); | ||||
|                 this.messages = this.messages.concat(<AddonModChatMessageWithUserData[]> messages); | ||||
|                 if (messages.length) { | ||||
|                     // New messages or beeps, scroll to bottom.
 | ||||
|                     setTimeout(() => this.scrollToBottom()); | ||||
| @ -190,7 +190,7 @@ export class AddonModChatChatPage { | ||||
|      * | ||||
|      * @return Promised resolved when done. | ||||
|      */ | ||||
|     protected fetchMessagesInterval(): Promise<any> { | ||||
|     protected fetchMessagesInterval(): Promise<void> { | ||||
|         this.logger.debug('Polling for messages'); | ||||
|         if (!this.isOnline || this.pollingRunning) { | ||||
|             // Obviously we cannot check for new messages when the app is offline.
 | ||||
| @ -225,7 +225,7 @@ export class AddonModChatChatPage { | ||||
|      * @param prevMessage Previous message object. | ||||
|      * @return True if messages are from diferent days, false othetwise. | ||||
|      */ | ||||
|     showDate(message: any, prevMessage: any): boolean { | ||||
|     showDate(message: AddonModChatMessageWithUserData, prevMessage: AddonModChatMessageWithUserData): boolean { | ||||
|         if (!prevMessage) { | ||||
|             return true; | ||||
|         } | ||||
| @ -267,7 +267,7 @@ export class AddonModChatChatPage { | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     reconnect(): Promise<any> { | ||||
|     reconnect(): Promise<void> { | ||||
|         const modal = this.domUtils.showModalLoading(); | ||||
| 
 | ||||
|         // Call startPolling would take a while for the first execution, so we'll execute it manually to check if it works now.
 | ||||
|  | ||||
| @ -15,7 +15,7 @@ | ||||
| import { Component } from '@angular/core'; | ||||
| import { IonicPage, NavParams } from 'ionic-angular'; | ||||
| import { CoreDomUtilsProvider } from '@providers/utils/dom'; | ||||
| import { AddonModChatProvider } from '../../providers/chat'; | ||||
| import { AddonModChatProvider, AddonModChatSessionMessageWithUserData } from '../../providers/chat'; | ||||
| import * as moment from 'moment'; | ||||
| 
 | ||||
| /** | ||||
| @ -34,7 +34,7 @@ export class AddonModChatSessionMessagesPage { | ||||
|     protected sessionEnd: number; | ||||
|     protected groupId: number; | ||||
|     protected loaded = false; | ||||
|     protected messages = []; | ||||
|     protected messages: AddonModChatSessionMessageWithUserData[] = []; | ||||
| 
 | ||||
|     constructor(navParams: NavParams, private domUtils: CoreDomUtilsProvider, private chatProvider: AddonModChatProvider) { | ||||
|         this.courseId = navParams.get('courseId'); | ||||
| @ -55,7 +55,7 @@ export class AddonModChatSessionMessagesPage { | ||||
|         return this.chatProvider.getSessionMessages(this.chatId, this.sessionStart, this.sessionEnd, this.groupId) | ||||
|                 .then((messages) => { | ||||
|             return this.chatProvider.getMessagesUserData(messages, this.courseId).then((messages) => { | ||||
|                 this.messages = messages; | ||||
|                 this.messages = <AddonModChatSessionMessageWithUserData[]> messages; | ||||
|             }); | ||||
|         }).catch((error) => { | ||||
|             this.domUtils.showErrorModalDefault(error, 'core.errorloadingcontent', true); | ||||
| @ -84,7 +84,7 @@ export class AddonModChatSessionMessagesPage { | ||||
|     * @param prevMessage Previous message object. | ||||
|     * @return True if messages are from diferent days, false othetwise. | ||||
|     */ | ||||
|    showDate(message: any, prevMessage: any): boolean { | ||||
|    showDate(message: AddonModChatSessionMessageWithUserData, prevMessage: AddonModChatSessionMessageWithUserData): boolean { | ||||
|        if (!prevMessage) { | ||||
|            return true; | ||||
|        } | ||||
|  | ||||
| @ -20,7 +20,7 @@ import { CoreUserProvider } from '@core/user/providers/user'; | ||||
| import { CoreGroupsProvider, CoreGroupInfo } from '@providers/groups'; | ||||
| import { CoreDomUtilsProvider } from '@providers/utils/dom'; | ||||
| import { CoreUtilsProvider } from '@providers/utils/utils'; | ||||
| import { AddonModChatProvider } from '../../providers/chat'; | ||||
| import { AddonModChatProvider, AddonModChatSession, AddonModChatSessionUser } from '../../providers/chat'; | ||||
| 
 | ||||
| /** | ||||
|  * Page that displays list of chat sessions. | ||||
| @ -73,13 +73,13 @@ export class AddonModChatSessionsPage { | ||||
|             this.groupId = this.groupsProvider.validateGroupId(this.groupId, groupInfo); | ||||
| 
 | ||||
|             return this.chatProvider.getSessions(this.chatId, this.groupId, this.showAll); | ||||
|         }).then((sessions) => { | ||||
|         }).then((sessions: AddonModChatSessionFormatted[]) => { | ||||
|             // Fetch user profiles.
 | ||||
|             const promises = []; | ||||
| 
 | ||||
|             sessions.forEach((session) => { | ||||
|                 session.duration = session.sessionend - session.sessionstart; | ||||
|                 session.sessionusers.forEach((sessionUser) => { | ||||
|                 session.sessionusers.forEach((sessionUser: AddonModChatUserSessionFormatted) => { | ||||
|                     if (!sessionUser.userfullname) { | ||||
|                         // The WS does not return the user name, fetch user profile.
 | ||||
|                         promises.push(this.userProvider.getProfile(sessionUser.userid, this.courseId, true).then((user) => { | ||||
| @ -156,3 +156,18 @@ export class AddonModChatSessionsPage { | ||||
|         $event.stopPropagation(); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Fields added to chat session in this view. | ||||
|  */ | ||||
| type AddonModChatSessionFormatted = AddonModChatSession & { | ||||
|     duration?: number; // Session duration.
 | ||||
|     allsessionusers?: AddonModChatUserSessionFormatted[]; // All session users.
 | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Fields added to user session in this view. | ||||
|  */ | ||||
| type AddonModChatUserSessionFormatted = AddonModChatSessionUser & { | ||||
|     userfullname?: string; // User full name.
 | ||||
| }; | ||||
|  | ||||
| @ -17,7 +17,7 @@ import { IonicPage, NavParams, ViewController } from 'ionic-angular'; | ||||
| import { CoreAppProvider } from '@providers/app'; | ||||
| import { CoreSitesProvider } from '@providers/sites'; | ||||
| import { CoreDomUtilsProvider } from '@providers/utils/dom'; | ||||
| import { AddonModChatProvider } from '../../providers/chat'; | ||||
| import { AddonModChatProvider, AddonModChatUser } from '../../providers/chat'; | ||||
| import { Network } from '@ionic-native/network'; | ||||
| 
 | ||||
| /** | ||||
| @ -30,12 +30,12 @@ import { Network } from '@ionic-native/network'; | ||||
| }) | ||||
| export class AddonModChatUsersPage { | ||||
| 
 | ||||
|     users = []; | ||||
|     users: AddonModChatUser[] = []; | ||||
|     usersLoaded = false; | ||||
|     currentUserId: number; | ||||
|     isOnline: boolean; | ||||
| 
 | ||||
|     protected sessionId: number; | ||||
|     protected sessionId: string; | ||||
|     protected onlineObserver: any; | ||||
| 
 | ||||
|     constructor(navParams: NavParams, network: Network,  zone: NgZone, private appProvider: CoreAppProvider, | ||||
| @ -77,7 +77,7 @@ export class AddonModChatUsersPage { | ||||
|      * | ||||
|      * @param user User object. | ||||
|      */ | ||||
|      talkTo(user: any): void { | ||||
|      talkTo(user: AddonModChatUser): void { | ||||
|         this.viewCtrl.dismiss({talkTo: user.fullname}); | ||||
|     } | ||||
| 
 | ||||
| @ -86,7 +86,7 @@ export class AddonModChatUsersPage { | ||||
|      * | ||||
|      * @param user User object. | ||||
|      */ | ||||
|     beepTo(user: any): void { | ||||
|     beepTo(user: AddonModChatUser): void { | ||||
|         this.viewCtrl.dismiss({beepTo: user.id}); | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -19,6 +19,7 @@ import { CoreUserProvider } from '@core/user/providers/user'; | ||||
| import { CoreCourseLogHelperProvider } from '@core/course/providers/log-helper'; | ||||
| import { CoreUtilsProvider } from '@providers/utils/utils'; | ||||
| import { CoreSite, CoreSiteWSPreSets } from '@classes/site'; | ||||
| import { CoreWSExternalWarning, CoreWSExternalFile } from '@providers/ws'; | ||||
| 
 | ||||
| /** | ||||
|  * Service that provides some features for chats. | ||||
| @ -41,7 +42,7 @@ export class AddonModChatProvider { | ||||
|      * @param siteId Site ID. If not defined, current site. | ||||
|      * @return Promise resolved when the chat is retrieved. | ||||
|      */ | ||||
|     getChat(courseId: number, cmId: number, siteId?: string): Promise<any> { | ||||
|     getChat(courseId: number, cmId: number, siteId?: string): Promise<AddonModChatChat> { | ||||
|         return this.sitesProvider.getSite(siteId).then((site) => { | ||||
|             const params = { | ||||
|                 courseids: [courseId] | ||||
| @ -51,7 +52,9 @@ export class AddonModChatProvider { | ||||
|                 updateFrequency: CoreSite.FREQUENCY_RARELY | ||||
|             }; | ||||
| 
 | ||||
|             return site.read('mod_chat_get_chats_by_courses', params, preSets).then((response) => { | ||||
|             return site.read('mod_chat_get_chats_by_courses', params, preSets) | ||||
|                     .then((response: AddonModChatGetChatsByCoursesResult): any => { | ||||
| 
 | ||||
|                 if (response.chats) { | ||||
|                     const chat = response.chats.find((chat) => chat.coursemodule == cmId); | ||||
|                     if (chat) { | ||||
| @ -70,12 +73,14 @@ export class AddonModChatProvider { | ||||
|      * @param chatId Chat instance ID. | ||||
|      * @return Promise resolved when the WS is executed. | ||||
|      */ | ||||
|     loginUser(chatId: number): Promise<any> { | ||||
|     loginUser(chatId: number): Promise<string> { | ||||
|         const params = { | ||||
|             chatid: chatId | ||||
|         }; | ||||
| 
 | ||||
|         return this.sitesProvider.getCurrentSite().write('mod_chat_login_user', params).then((response) => { | ||||
|         return this.sitesProvider.getCurrentSite().write('mod_chat_login_user', params) | ||||
|                 .then((response: AddonModChatLoginUserResult): any => { | ||||
| 
 | ||||
|             if (response.chatsid) { | ||||
|                 return response.chatsid; | ||||
|             } | ||||
| @ -108,14 +113,16 @@ export class AddonModChatProvider { | ||||
|      * @param beepUserId Beep user ID. | ||||
|      * @return Promise resolved when the WS is executed. | ||||
|      */ | ||||
|     sendMessage(sessionId: number, message: string, beepUserId: number): Promise<any> { | ||||
|     sendMessage(sessionId: string, message: string, beepUserId: number): Promise<number> { | ||||
|         const params = { | ||||
|             chatsid: sessionId, | ||||
|             messagetext: message, | ||||
|             beepid: beepUserId | ||||
|         }; | ||||
| 
 | ||||
|         return this.sitesProvider.getCurrentSite().write('mod_chat_send_chat_message', params).then((response) => { | ||||
|         return this.sitesProvider.getCurrentSite().write('mod_chat_send_chat_message', params) | ||||
|                 .then((response: AddonModChatSendChatMessageResult): any => { | ||||
| 
 | ||||
|             if (response.messageid) { | ||||
|                 return response.messageid; | ||||
|             } | ||||
| @ -131,7 +138,7 @@ export class AddonModChatProvider { | ||||
|      * @param lastTime Last time when messages were retrieved. | ||||
|      * @return Promise resolved when the WS is executed. | ||||
|      */ | ||||
|     getLatestMessages(sessionId: number, lastTime: number): Promise<any> { | ||||
|     getLatestMessages(sessionId: string, lastTime: number): Promise<AddonModChatGetChatLatestMessagesResult> { | ||||
|         const params = { | ||||
|             chatsid: sessionId, | ||||
|             chatlasttime: lastTime | ||||
| @ -149,8 +156,10 @@ export class AddonModChatProvider { | ||||
|      * @param courseId ID of the course the messages belong to. | ||||
|      * @return Promise always resolved with the formatted messages. | ||||
|      */ | ||||
|     getMessagesUserData(messages: any[], courseId: number): Promise<any> { | ||||
|         const promises = messages.map((message) => { | ||||
|     getMessagesUserData(messages: (AddonModChatMessage | AddonModChatSessionMessage)[], courseId: number) | ||||
|             : Promise<(AddonModChatMessageWithUserData | AddonModChatSessionMessageWithUserData)[]> { | ||||
| 
 | ||||
|         const promises = messages.map((message: AddonModChatMessageWithUserData | AddonModChatSessionMessageWithUserData) => { | ||||
|             return this.userProvider.getProfile(message.userid, courseId, true).then((user) => { | ||||
|                 message.userfullname = user.fullname; | ||||
|                 message.userprofileimageurl = user.profileimageurl; | ||||
| @ -171,7 +180,7 @@ export class AddonModChatProvider { | ||||
|      * @param sessionId Chat sessiond ID. | ||||
|      * @return Promise resolved when the WS is executed. | ||||
|      */ | ||||
|     getChatUsers(sessionId: number): Promise<any> { | ||||
|     getChatUsers(sessionId: string): Promise<AddonModChatGetChatUsersResult> { | ||||
|         const params = { | ||||
|             chatsid: sessionId | ||||
|         }; | ||||
| @ -206,7 +215,8 @@ export class AddonModChatProvider { | ||||
|      * @since 3.5 | ||||
|      */ | ||||
|     getSessions(chatId: number, groupId: number = 0, showAll: boolean = false, ignoreCache: boolean = false, siteId?: string): | ||||
|             Promise<any[]> { | ||||
|             Promise<AddonModChatSession[]> { | ||||
| 
 | ||||
|         return this.sitesProvider.getSite(siteId).then((site) => { | ||||
|             const params = { | ||||
|                 chatid: chatId, | ||||
| @ -222,7 +232,7 @@ export class AddonModChatProvider { | ||||
|                 preSets.emergencyCache = false; | ||||
|             } | ||||
| 
 | ||||
|             return site.read('mod_chat_get_sessions', params, preSets).then((response) => { | ||||
|             return site.read('mod_chat_get_sessions', params, preSets).then((response: AddonModChatGetSessionsResult): any => { | ||||
|                 if (!response || !response.sessions) { | ||||
|                     return Promise.reject(null); | ||||
|                 } | ||||
| @ -245,7 +255,8 @@ export class AddonModChatProvider { | ||||
|      * @since 3.5 | ||||
|      */ | ||||
|     getSessionMessages(chatId: number, sessionStart: number, sessionEnd: number, groupId: number = 0, ignoreCache: boolean = false, | ||||
|             siteId?: string): Promise<any[]> { | ||||
|             siteId?: string): Promise<AddonModChatSessionMessage[]> { | ||||
| 
 | ||||
|         return this.sitesProvider.getSite(siteId).then((site) => { | ||||
|             const params = { | ||||
|                 chatid: chatId, | ||||
| @ -262,7 +273,9 @@ export class AddonModChatProvider { | ||||
|                 preSets.emergencyCache = false; | ||||
|             } | ||||
| 
 | ||||
|             return site.read('mod_chat_get_session_messages', params, preSets).then((response) => { | ||||
|             return site.read('mod_chat_get_session_messages', params, preSets) | ||||
|                     .then((response: AddonModChatGetSessionMessagesResult): any => { | ||||
| 
 | ||||
|                 if (!response || !response.messages) { | ||||
|                     return Promise.reject(null); | ||||
|                 } | ||||
| @ -390,3 +403,152 @@ export class AddonModChatProvider { | ||||
|         return this.ROOT_CACHE_KEY + 'sessionsMessages:' + chatId + ':'; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Chat returned by mod_chat_get_chats_by_courses. | ||||
|  */ | ||||
| export type AddonModChatChat = { | ||||
|     id: number; // Chat id.
 | ||||
|     coursemodule: number; // Course module id.
 | ||||
|     course: number; // Course id.
 | ||||
|     name: string; // Chat name.
 | ||||
|     intro: string; // The Chat intro.
 | ||||
|     introformat: number; // Intro format (1 = HTML, 0 = MOODLE, 2 = PLAIN or 4 = MARKDOWN).
 | ||||
|     introfiles?: CoreWSExternalFile[]; // @since 3.2.
 | ||||
|     chatmethod?: string; // Chat method (sockets, ajax, header_js).
 | ||||
|     keepdays?: number; // Keep days.
 | ||||
|     studentlogs?: number; // Student logs visible to everyone.
 | ||||
|     chattime?: number; // Chat time.
 | ||||
|     schedule?: number; // Schedule type.
 | ||||
|     timemodified?: number; // Time of last modification.
 | ||||
|     section?: number; // Course section id.
 | ||||
|     visible?: boolean; // Visible.
 | ||||
|     groupmode?: number; // Group mode.
 | ||||
|     groupingid?: number; // Group id.
 | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Chat user returned by mod_chat_get_chat_users. | ||||
|  */ | ||||
| export type AddonModChatUser = { | ||||
|     id: number; // User id.
 | ||||
|     fullname: string; // User full name.
 | ||||
|     profileimageurl: string; // User picture URL.
 | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Meessage returned by mod_chat_get_chat_latest_messages. | ||||
|  */ | ||||
| export type AddonModChatMessage = { | ||||
|     id: number; // Message id.
 | ||||
|     userid: number; // User id.
 | ||||
|     system: boolean; // True if is a system message (like user joined).
 | ||||
|     message: string; // Message text.
 | ||||
|     timestamp: number; // Timestamp for the message.
 | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Message with user data | ||||
|  */ | ||||
| export type AddonModChatMessageWithUserData = AddonModChatMessage & AddonModChatMessageUserData; | ||||
| 
 | ||||
| /** | ||||
|  * Chat session. | ||||
|  */ | ||||
| export type AddonModChatSession = { | ||||
|     sessionstart: number; // Session start time.
 | ||||
|     sessionend: number; // Session end time.
 | ||||
|     sessionusers: AddonModChatSessionUser[]; // Session users.
 | ||||
|     iscomplete: boolean; // Whether the session is completed or not.
 | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Chat user returned by mod_chat_get_sessions. | ||||
|  */ | ||||
| export type AddonModChatSessionUser = { | ||||
|     userid: number; // User id.
 | ||||
|     messagecount: number; // Number of messages in the session.
 | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Message returned by mod_chat_get_session_messages. | ||||
|  */ | ||||
| export type AddonModChatSessionMessage = { | ||||
|     id: number; // The message record id.
 | ||||
|     chatid: number; // The chat id.
 | ||||
|     userid: number; // The user who wrote the message.
 | ||||
|     groupid: number; // The group this message belongs to.
 | ||||
|     issystem: boolean; // Whether is a system message or not.
 | ||||
|     message: string; // The message text.
 | ||||
|     timestamp: number; // The message timestamp (indicates when the message was sent).
 | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Message with user data | ||||
|  */ | ||||
| export type AddonModChatSessionMessageWithUserData = AddonModChatSessionMessage & AddonModChatMessageUserData; | ||||
| 
 | ||||
| /** | ||||
|  * Result of WS mod_chat_get_chats_by_courses. | ||||
|  */ | ||||
| export type AddonModChatGetChatsByCoursesResult = { | ||||
|     chats: AddonModChatChat[]; | ||||
|     warnings?: CoreWSExternalWarning[]; | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Result of WS mod_chat_get_chat_users. | ||||
|  */ | ||||
| export type AddonModChatGetChatUsersResult = { | ||||
|     users: AddonModChatUser[]; // List of users.
 | ||||
|     warnings?: CoreWSExternalWarning[]; | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Result of WS mod_chat_get_sessions. | ||||
|  */ | ||||
| export type AddonModChatGetSessionsResult = { | ||||
|     sessions: AddonModChatSession[]; // List of sessions.
 | ||||
|     warnings?: CoreWSExternalWarning[]; | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Result of WS mod_chat_get_session_messages. | ||||
|  */ | ||||
| export type AddonModChatGetSessionMessagesResult = { | ||||
|     messages: AddonModChatSessionMessage[]; | ||||
|     warnings?: CoreWSExternalWarning[]; | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Result of WS mod_chat_send_chat_message. | ||||
|  */ | ||||
| export type AddonModChatSendChatMessageResult = { | ||||
|     messageid: number; // Message sent id.
 | ||||
|     warnings?: CoreWSExternalWarning[]; | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Result of WS mod_chat_get_chat_latest_messages. | ||||
|  */ | ||||
| export type AddonModChatGetChatLatestMessagesResult = { | ||||
|     messages: AddonModChatMessage[]; // List of messages.
 | ||||
|     chatnewlasttime: number; // New last time.
 | ||||
|     warnings?: CoreWSExternalWarning[]; | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Result of WS mod_chat_login_user. | ||||
|  */ | ||||
| export type AddonModChatLoginUserResult = { | ||||
|     chatsid: string; // Unique chat session id.
 | ||||
|     warnings?: CoreWSExternalWarning[]; | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * User data added to messages. | ||||
|  */ | ||||
| type AddonModChatMessageUserData = { | ||||
|     userfullname?: string; // Calculated in the app. Full name of the user who wrote the message.
 | ||||
|     userprofileimageurl?: string; // Calculated in the app. Full name of the user who wrote the message.
 | ||||
| }; | ||||
|  | ||||
| @ -23,7 +23,7 @@ import { CoreUtilsProvider } from '@providers/utils/utils'; | ||||
| import { CoreCourseProvider } from '@core/course/providers/course'; | ||||
| import { CoreCourseActivityPrefetchHandlerBase } from '@core/course/classes/activity-prefetch-handler'; | ||||
| import { CoreUserProvider } from '@core/user/providers/user'; | ||||
| import { AddonModChatProvider } from './chat'; | ||||
| import { AddonModChatProvider, AddonModChatChat } from './chat'; | ||||
| 
 | ||||
| /** | ||||
|  * Handler to prefetch chats. | ||||
| @ -116,12 +116,12 @@ export class AddonModChatPrefetchHandler extends CoreCourseActivityPrefetchHandl | ||||
|      */ | ||||
|     protected prefetchChat(module: any, courseId: number, single: boolean, siteId: string): Promise<any> { | ||||
|         // Prefetch chat and group info.
 | ||||
|         const promises = [ | ||||
|         const promises: Promise<any>[] = [ | ||||
|             this.chatProvider.getChat(courseId, module.id, siteId), | ||||
|             this.groupsProvider.getActivityGroupInfo(module.id, false, undefined, siteId) | ||||
|         ]; | ||||
| 
 | ||||
|         return Promise.all(promises).then(([chat, groupInfo]: [any, CoreGroupInfo]) => { | ||||
|         return Promise.all(promises).then(([chat, groupInfo]: [AddonModChatChat, CoreGroupInfo]) => { | ||||
|             const promises = []; | ||||
| 
 | ||||
|             let groupIds = [0]; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user