MOBILE-4653 messages: Move AddonMessages constants

main
Pau Ferrer Ocaña 2024-11-06 11:41:09 +01:00
parent dab0ea6c6e
commit e69eed4f4c
11 changed files with 287 additions and 127 deletions

View File

@ -0,0 +1,52 @@
// (C) Copyright 2015 Moodle Pty Ltd.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
export const ADDON_MESSAGES_NEW_MESSAGE_EVENT = 'addon_messages_new_message_event';
export const ADDON_MESSAGES_READ_CHANGED_EVENT = 'addon_messages_read_changed_event';
// Notify a conversation should be opened.
export const ADDON_MESSAGES_OPEN_CONVERSATION_EVENT = 'addon_messages_open_conversation_event';
export const ADDON_MESSAGES_UPDATE_CONVERSATION_LIST_EVENT = 'addon_messages_update_conversation_list_event';
export const ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT = 'addon_messages_member_changed_event';
export const ADDON_MESSAGES_UNREAD_CONVERSATION_COUNTS_EVENT = 'addon_messages_unread_conversation_counts_event';
export const ADDON_MESSAGES_CONTACT_REQUESTS_COUNT_EVENT = 'addon_messages_contact_requests_count_event';
export const ADDON_MESSAGES_POLL_INTERVAL = 10000;
export const ADDON_MESSAGES_PUSH_SIMULATION_COMPONENT = 'AddonMessagesPushSimulation';
export const enum AddonMessagesMessagePrivacy {
COURSEMEMBER = 0, // Privacy setting for being messaged by anyone within courses user is member.
ONLYCONTACTS = 1, // Privacy setting for being messaged only by contacts.
SITE = 2, // Privacy setting for being messaged by anyone on the site.
}
export const enum AddonMessagesMessageConversationType {
INDIVIDUAL = 1, // An individual conversation.
GROUP = 2, // A group conversation.
SELF = 3, // A self conversation.
}
export const ADDON_MESSAGES_LIMIT_CONTACTS = 50;
export const ADDON_MESSAGES_LIMIT_MESSAGES = 50;
export const ADDON_MESSAGES_LIMIT_INITIAL_USER_SEARCH = 3;
export const ADDON_MESSAGES_LIMIT_SEARCH = 50;
export const ADDON_MESSAGES_NOTIFICATION_PREFERENCES_KEY = 'message_provider_moodle_instantmessage';
export const ADDON_MESSAGES_AUTO_SYNCED = 'addon_messages_autom_synced';
export const enum AddonMessagesUpdateConversationAction {
MUTE = 'mute',
FAVOURITE = 'favourite',
DELETE = 'delete',
}

View File

@ -15,7 +15,6 @@
import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';
import { CoreSites } from '@services/sites';
import {
AddonMessagesProvider,
AddonMessagesGetContactsWSResponse,
AddonMessagesSearchContactsContact,
AddonMessagesGetContactsContact,
@ -29,6 +28,7 @@ import { CoreScreen } from '@services/screen';
import { CoreNavigator } from '@services/navigator';
import { CoreSplitViewComponent } from '@components/split-view/split-view';
import { CoreKeyboard } from '@singletons/keyboard';
import { ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT } from '@addons/messages/constants';
/**
* Page that displays the list of contacts.
@ -73,7 +73,7 @@ export class AddonMessagesContacts35Page implements OnInit, OnDestroy {
// Refresh the list when a contact request is confirmed.
this.memberInfoObserver = CoreEvents.on(
AddonMessagesProvider.MEMBER_INFO_CHANGED_EVENT,
ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT,
(data) => {
if (data.contactRequestConfirmed) {
this.refreshData();

View File

@ -18,12 +18,12 @@ import { CoreSites } from '@services/sites';
import {
AddonMessages,
AddonMessagesConversationMember,
AddonMessagesProvider,
} from '../../services/messages';
import { CoreNavigator } from '@services/navigator';
import { CoreScreen } from '@services/screen';
import { CoreDomUtils } from '@services/utils/dom';
import { CoreSplitViewComponent } from '@components/split-view/split-view';
import { ADDON_MESSAGES_CONTACT_REQUESTS_COUNT_EVENT, ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT } from '@addons/messages/constants';
/**
* Page that displays contacts and contact requests.
@ -63,7 +63,7 @@ export class AddonMessagesContactsPage implements OnInit, OnDestroy {
// Update the contact requests badge.
this.contactRequestsCountObserver = CoreEvents.on(
AddonMessagesProvider.CONTACT_REQUESTS_COUNT_EVENT,
ADDON_MESSAGES_CONTACT_REQUESTS_COUNT_EVENT,
(data) => {
this.requestsBadge = data.count > 0 ? String(data.count) : '';
},
@ -72,7 +72,7 @@ export class AddonMessagesContactsPage implements OnInit, OnDestroy {
// Update block status of a user.
this.memberInfoObserver = CoreEvents.on(
AddonMessagesProvider.MEMBER_INFO_CHANGED_EVENT,
ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT,
(data) => {
if (data.userBlocked || data.userUnblocked) {
const user = this.confirmedContacts.find((user) => user.id == data.userId);

View File

@ -18,17 +18,15 @@ import { AlertOptions } from '@ionic/core';
import { CoreEventObserver, CoreEvents } from '@singletons/events';
import { CoreSites } from '@services/sites';
import {
AddonMessagesProvider,
AddonMessagesConversationFormatted,
AddonMessagesConversationMember,
AddonMessagesGetMessagesMessage,
AddonMessages,
AddonMessagesConversationMessageFormatted,
AddonMessagesSendMessageResults,
AddonMessagesUpdateConversationAction,
} from '../../services/messages';
import { AddonMessagesOffline, AddonMessagesOfflineMessagesDBRecordFormatted } from '../../services/messages-offline';
import { AddonMessagesSync, AddonMessagesSyncProvider } from '../../services/messages-sync';
import { AddonMessagesSync } from '../../services/messages-sync';
import { CoreUser } from '@features/user/services/user';
import { CoreDomUtils } from '@services/utils/dom';
import { CoreUtils } from '@services/utils/utils';
@ -48,6 +46,18 @@ import { CoreText } from '@singletons/text';
import { CoreWait } from '@singletons/wait';
import { CoreModals } from '@services/modals';
import { CoreLoadings } from '@services/loadings';
import {
ADDON_MESSAGES_AUTO_SYNCED,
ADDON_MESSAGES_LIMIT_MESSAGES,
ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT,
ADDON_MESSAGES_NEW_MESSAGE_EVENT,
ADDON_MESSAGES_OPEN_CONVERSATION_EVENT,
ADDON_MESSAGES_POLL_INTERVAL,
ADDON_MESSAGES_READ_CHANGED_EVENT,
ADDON_MESSAGES_UPDATE_CONVERSATION_LIST_EVENT,
AddonMessagesMessageConversationType,
AddonMessagesUpdateConversationAction,
} from '@addons/messages/constants';
/**
* Page that displays a message discussion page.
@ -125,7 +135,7 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView
this.logger = CoreLogger.getInstance('AddonMessagesDiscussionPage');
// Refresh data if this discussion is synchronized automatically.
this.syncObserver = CoreEvents.on(AddonMessagesSyncProvider.AUTO_SYNCED, (data) => {
this.syncObserver = CoreEvents.on(ADDON_MESSAGES_AUTO_SYNCED, (data) => {
if ((data.userId && data.userId == this.userId) ||
(data.conversationId && data.conversationId == this.conversationId)) {
// Fetch messages.
@ -140,7 +150,7 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView
// Refresh data if info of a mamber of the conversation have changed.
this.memberInfoObserver = CoreEvents.on(
AddonMessagesProvider.MEMBER_INFO_CHANGED_EVENT,
ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT,
(data) => {
if (data.userId && (this.members[data.userId] || this.otherMember && data.userId == this.otherMember.id)) {
this.fetchData();
@ -595,13 +605,13 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView
this.conversationId = this.conversation.id;
this.title = this.conversation.name;
this.conversationImage = this.conversation.imageurl;
this.isGroup = this.conversation.type == AddonMessagesProvider.MESSAGE_CONVERSATION_TYPE_GROUP;
this.isGroup = this.conversation.type === AddonMessagesMessageConversationType.GROUP;
this.favouriteIcon = 'fas-star';
this.muteIcon = this.conversation.ismuted ? 'fas-bell' : 'fas-bell-slash';
if (!this.isGroup) {
this.userId = this.conversation.userid;
}
this.isSelf = this.conversation.type == AddonMessagesProvider.MESSAGE_CONVERSATION_TYPE_SELF;
this.isSelf = this.conversation.type === AddonMessagesMessageConversationType.SELF;
return true;
} else {
@ -645,7 +655,7 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView
const messages: AddonMessagesConversationMessageFormatted[] = result.messages;
if (pagesToLoad > 0 && result.canLoadMore) {
offset += AddonMessagesProvider.LIMIT_MESSAGES;
offset += ADDON_MESSAGES_LIMIT_MESSAGES;
// Get more messages.
const nextMessages = await this.getConversationMessages(pagesToLoad, offset);
@ -764,7 +774,7 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView
}
if (readChanged) {
CoreEvents.trigger(AddonMessagesProvider.READ_CHANGED_EVENT, {
CoreEvents.trigger(ADDON_MESSAGES_READ_CHANGED_EVENT, {
conversationId: this.conversationId,
userId: this.userId,
}, this.siteId);
@ -789,7 +799,7 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView
if (trigger) {
// Update discussions last message.
CoreEvents.trigger(AddonMessagesProvider.NEW_MESSAGE_EVENT, {
CoreEvents.trigger(ADDON_MESSAGES_NEW_MESSAGE_EVENT, {
conversationId: this.conversationId,
userId: this.userId,
message: this.lastMessage?.text,
@ -905,7 +915,7 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView
this.fetchMessages().catch(() => {
// Ignore errors.
});
}, AddonMessagesProvider.POLL_INTERVAL);
}, ADDON_MESSAGES_POLL_INTERVAL);
}
}
@ -1265,7 +1275,7 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView
if (splitViewLoaded) {
// Notify the left pane to load it, this way the right conversation will be highlighted.
CoreEvents.trigger(
AddonMessagesProvider.OPEN_CONVERSATION_EVENT,
ADDON_MESSAGES_OPEN_CONVERSATION_EVENT,
{ userId },
this.siteId,
);
@ -1300,7 +1310,7 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView
// Get the conversation data so it's cached. Don't block the user for this.
AddonMessages.getConversation(this.conversation.id, undefined, true);
CoreEvents.trigger(AddonMessagesProvider.UPDATE_CONVERSATION_LIST_EVENT, {
CoreEvents.trigger(ADDON_MESSAGES_UPDATE_CONVERSATION_LIST_EVENT, {
conversationId: this.conversation.id,
action: AddonMessagesUpdateConversationAction.FAVOURITE,
value: this.conversation.isfavourite,
@ -1332,7 +1342,7 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView
// Get the conversation data so it's cached. Don't block the user for this.
AddonMessages.getConversation(this.conversation.id, undefined, true);
CoreEvents.trigger(AddonMessagesProvider.UPDATE_CONVERSATION_LIST_EVENT, {
CoreEvents.trigger(ADDON_MESSAGES_UPDATE_CONVERSATION_LIST_EVENT, {
conversationId: this.conversation.id,
action: AddonMessagesUpdateConversationAction.MUTE,
value: this.conversation.ismuted,
@ -1447,7 +1457,7 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView
await AddonMessages.deleteConversation(this.conversation.id);
CoreEvents.trigger(
AddonMessagesProvider.UPDATE_CONVERSATION_LIST_EVENT,
ADDON_MESSAGES_UPDATE_CONVERSATION_LIST_EVENT,
{
conversationId: this.conversation.id,
action: AddonMessagesUpdateConversationAction.DELETE,

View File

@ -19,7 +19,6 @@ import {
AddonMessages,
AddonMessagesDiscussion,
AddonMessagesMessageAreaContact,
AddonMessagesProvider,
} from '../../services/messages';
import { CoreDomUtils } from '@services/utils/dom';
import { CoreUtils } from '@services/utils/utils';
@ -33,6 +32,7 @@ import { CoreScreen } from '@services/screen';
import { CorePlatform } from '@services/platform';
import { CoreSplitViewComponent } from '@components/split-view/split-view';
import { CoreKeyboard } from '@singletons/keyboard';
import { ADDON_MESSAGES_NEW_MESSAGE_EVENT, ADDON_MESSAGES_READ_CHANGED_EVENT } from '@addons/messages/constants';
/**
* Page that displays the list of discussions.
@ -75,7 +75,7 @@ export class AddonMessagesDiscussions35Page implements OnInit, OnDestroy {
// Update discussions when new message is received.
this.newMessagesObserver = CoreEvents.on(
AddonMessagesProvider.NEW_MESSAGE_EVENT,
ADDON_MESSAGES_NEW_MESSAGE_EVENT,
(data) => {
if (data.userId && this.discussions) {
const discussion = this.discussions.find((disc) => disc.message?.user === data.userId);
@ -97,7 +97,7 @@ export class AddonMessagesDiscussions35Page implements OnInit, OnDestroy {
// Update discussions when a message is read.
this.readChangedObserver = CoreEvents.on(
AddonMessagesProvider.READ_CHANGED_EVENT,
ADDON_MESSAGES_READ_CHANGED_EVENT,
(data) => {
if (data.userId && this.discussions) {
const discussion = this.discussions.find((disc) => disc.message?.user === data.userId);

View File

@ -17,12 +17,10 @@ import { AccordionGroupChangeEventDetail, IonAccordionGroup, IonContent } from '
import { CoreEventObserver, CoreEvents } from '@singletons/events';
import { CoreSites } from '@services/sites';
import {
AddonMessagesProvider,
AddonMessagesConversationFormatted,
AddonMessages,
AddonMessagesNewMessagedEventData,
AddonMessagesUnreadConversationCountsEventData,
AddonMessagesUpdateConversationAction,
} from '../../services/messages';
import {
AddonMessagesOffline,
@ -40,6 +38,17 @@ import { CoreNavigator } from '@services/navigator';
import { CoreScreen } from '@services/screen';
import { CorePlatform } from '@services/platform';
import { CoreSplitViewComponent } from '@components/split-view/split-view';
import {
ADDON_MESSAGES_CONTACT_REQUESTS_COUNT_EVENT,
ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT,
ADDON_MESSAGES_NEW_MESSAGE_EVENT,
ADDON_MESSAGES_OPEN_CONVERSATION_EVENT,
ADDON_MESSAGES_READ_CHANGED_EVENT,
ADDON_MESSAGES_UNREAD_CONVERSATION_COUNTS_EVENT,
ADDON_MESSAGES_UPDATE_CONVERSATION_LIST_EVENT,
AddonMessagesMessageConversationType,
AddonMessagesUpdateConversationAction,
} from '@addons/messages/constants';
const enum AddonMessagesGroupConversationOptionNames {
FAVOURITES = 'favourites',
@ -82,7 +91,7 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
optionName: AddonMessagesGroupConversationOptionNames.GROUP,
titleString: 'addon.messages.groupconversations',
emptyString: 'addon.messages.nogroupconversations',
type: AddonMessagesProvider.MESSAGE_CONVERSATION_TYPE_GROUP,
type: AddonMessagesMessageConversationType.GROUP,
favourites: false,
count: 0,
unread: 0,
@ -92,7 +101,7 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
optionName: AddonMessagesGroupConversationOptionNames.INDIVIDUAL,
titleString: 'addon.messages.individualconversations',
emptyString: 'addon.messages.noindividualconversations',
type: AddonMessagesProvider.MESSAGE_CONVERSATION_TYPE_INDIVIDUAL,
type: AddonMessagesMessageConversationType.INDIVIDUAL,
favourites: false,
count: 0,
unread: 0,
@ -100,7 +109,7 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
},
];
typeGroup = AddonMessagesProvider.MESSAGE_CONVERSATION_TYPE_GROUP;
typeGroup = AddonMessagesMessageConversationType.GROUP;
protected siteId: string;
protected currentUserId: number;
@ -124,7 +133,7 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
// Update conversations when new message is received.
this.newMessagesObserver = CoreEvents.on(
AddonMessagesProvider.NEW_MESSAGE_EVENT,
ADDON_MESSAGES_NEW_MESSAGE_EVENT,
(data) => {
// Check if the new message belongs to the option that is currently expanded.
const expandedOption = this.getExpandedOption();
@ -163,7 +172,7 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
conversation.lastmessagedate = data.timecreated / 1000;
if (data.userFrom) {
conversation.sentfromcurrentuser = data.userFrom.id === this.currentUserId;
if (conversation.type === AddonMessagesProvider.MESSAGE_CONVERSATION_TYPE_GROUP) {
if (conversation.type === AddonMessagesMessageConversationType.GROUP) {
conversation.members[0] = data.userFrom;
}
}
@ -183,7 +192,7 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
);
// Update conversations when a message is read.
this.readChangedObserver = CoreEvents.on(AddonMessagesProvider.READ_CHANGED_EVENT, (data) => {
this.readChangedObserver = CoreEvents.on(ADDON_MESSAGES_READ_CHANGED_EVENT, (data) => {
if (data.conversationId) {
const conversation = this.findConversation(data.conversationId);
@ -200,7 +209,7 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
// Load a discussion if we receive an event to do so.
this.openConversationObserver = CoreEvents.on(
AddonMessagesProvider.OPEN_CONVERSATION_EVENT,
ADDON_MESSAGES_OPEN_CONVERSATION_EVENT,
(data) => {
if (data.conversationId || data.userId) {
this.gotoConversation(data.conversationId, data.userId);
@ -222,7 +231,7 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
// Update conversations if we receive an event to do so.
this.updateConversationListObserver = CoreEvents.on(
AddonMessagesProvider.UPDATE_CONVERSATION_LIST_EVENT,
ADDON_MESSAGES_UPDATE_CONVERSATION_LIST_EVENT,
(data) => {
if (data?.action === AddonMessagesUpdateConversationAction.MUTE) {
// If the conversation is displayed, change its muted value.
@ -256,7 +265,7 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
// Update unread conversation counts.
this.cronObserver = CoreEvents.on(
AddonMessagesProvider.UNREAD_CONVERSATION_COUNTS_EVENT,
ADDON_MESSAGES_UNREAD_CONVERSATION_COUNTS_EVENT,
(data) => {
this.setCounts(data, 'unread');
},
@ -265,7 +274,7 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
// Update the contact requests badge.
this.contactRequestsCountObserver = CoreEvents.on(
AddonMessagesProvider.CONTACT_REQUESTS_COUNT_EVENT,
ADDON_MESSAGES_CONTACT_REQUESTS_COUNT_EVENT,
(data) => {
this.contactRequestsCount = data.count;
},
@ -274,7 +283,7 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
// Update block status of a user.
this.memberInfoObserver = CoreEvents.on(
AddonMessagesProvider.MEMBER_INFO_CHANGED_EVENT,
ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT,
(data) => {
if (!data.userBlocked && !data.userUnblocked) {
// The block status has not changed, ignore.
@ -638,7 +647,7 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
// Conversation not found, it could be an old one or the message could belong to another option.
conversation = {
id: message.conversationid,
type: message.conversation?.type || AddonMessagesProvider.MESSAGE_CONVERSATION_TYPE_INDIVIDUAL,
type: message.conversation?.type || AddonMessagesMessageConversationType.INDIVIDUAL,
membercount: message.conversation?.membercount || 0,
ismuted: message.conversation?.ismuted || false,
isfavourite: message.conversation?.isfavourite || false,
@ -657,7 +666,7 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
this.addOfflineConversation(conversation, option);
}
}
} else if (option.type === AddonMessagesProvider.MESSAGE_CONVERSATION_TYPE_INDIVIDUAL) {
} else if (option.type === AddonMessagesMessageConversationType.INDIVIDUAL) {
// It's a new conversation. Check if we already created it (there is more than one message for the same user).
const conversation = this.findConversation(undefined, message.touserid, option);
@ -675,7 +684,7 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
}).then((user) => {
const conversation: AddonMessagesConversationForList = {
id: 0,
type: AddonMessagesProvider.MESSAGE_CONVERSATION_TYPE_INDIVIDUAL,
type: AddonMessagesMessageConversationType.INDIVIDUAL,
membercount: 0, // Faked data.
ismuted: false, // Faked data.
isfavourite: false, // Faked data.
@ -742,7 +751,7 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
return AddonMessagesGroupConversationOptionNames.FAVOURITES;
}
if (conversation.type === AddonMessagesProvider.MESSAGE_CONVERSATION_TYPE_GROUP) {
if (conversation.type === AddonMessagesMessageConversationType.GROUP) {
return AddonMessagesGroupConversationOptionNames.GROUP;
}

View File

@ -16,7 +16,6 @@ import { Component, OnDestroy, ViewChild } from '@angular/core';
import { CoreEventObserver, CoreEvents } from '@singletons/events';
import { CoreSites } from '@services/sites';
import {
AddonMessagesProvider,
AddonMessagesConversationMember,
AddonMessagesMessageAreaContact,
AddonMessages,
@ -26,6 +25,11 @@ import { CoreNavigator } from '@services/navigator';
import { CoreScreen } from '@services/screen';
import { CoreSplitViewComponent } from '@components/split-view/split-view';
import { CoreKeyboard } from '@singletons/keyboard';
import {
ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT,
ADDON_MESSAGES_LIMIT_SEARCH,
ADDON_MESSAGES_LIMIT_INITIAL_USER_SEARCH,
} from '@addons/messages/constants';
/**
* Page for searching users.
@ -74,7 +78,7 @@ export class AddonMessagesSearchPage implements OnDestroy {
constructor() {
// Update block status of a user.
this.memberInfoObserver = CoreEvents.on(
AddonMessagesProvider.MEMBER_INFO_CHANGED_EVENT,
ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT,
(data) => {
if (!data.userBlocked && !data.userUnblocked) {
// The block status has not changed, ignore.
@ -139,7 +143,7 @@ export class AddonMessagesSearchPage implements OnDestroy {
let canLoadMoreMessages = false;
if (!loadMore || loadMore == 'contacts' || loadMore == 'noncontacts') {
const limitNum = loadMore ? AddonMessagesProvider.LIMIT_SEARCH : AddonMessagesProvider.LIMIT_INITIAL_USER_SEARCH;
const limitNum = loadMore ? ADDON_MESSAGES_LIMIT_SEARCH : ADDON_MESSAGES_LIMIT_INITIAL_USER_SEARCH;
let limitFrom = 0;
if (loadMore == 'contacts') {
limitFrom = this.contacts.results.length;

View File

@ -14,7 +14,7 @@
import { Component, OnDestroy, OnInit, signal } from '@angular/core';
import {
AddonMessagesProvider, AddonMessagesMessagePreferences,
AddonMessagesMessagePreferences,
AddonMessagesMessagePreferencesNotification,
AddonMessagesMessagePreferencesNotificationProcessor,
AddonMessages,
@ -29,6 +29,7 @@ import { AddonNotificationsPreferencesNotificationProcessorState } from '@addons
import { CorePlatform } from '@services/platform';
import { CoreErrorHelper } from '@services/error-helper';
import { CoreLoadings } from '@services/loadings';
import { ADDON_MESSAGES_NOTIFICATION_PREFERENCES_KEY, AddonMessagesMessagePrivacy } from '@addons/messages/constants';
/**
* Page that displays the messages settings page.
@ -46,9 +47,9 @@ export class AddonMessagesSettingsPage implements OnInit, OnDestroy {
contactablePrivacy?: number | boolean;
advancedContactable = false; // Whether the site supports "advanced" contactable privacy.
allowSiteMessaging = false;
onlyContactsValue = AddonMessagesProvider.MESSAGE_PRIVACY_ONLYCONTACTS;
courseMemberValue = AddonMessagesProvider.MESSAGE_PRIVACY_COURSEMEMBER;
siteValue = AddonMessagesProvider.MESSAGE_PRIVACY_SITE;
onlyContactsValue = AddonMessagesMessagePrivacy.ONLYCONTACTS;
courseMemberValue = AddonMessagesMessagePrivacy.COURSEMEMBER;
siteValue = AddonMessagesMessagePrivacy.SITE;
groupMessagingEnabled = false;
sendOnEnter = false;
warningMessage = signal<string | undefined>(undefined);
@ -91,7 +92,7 @@ export class AddonMessagesSettingsPage implements OnInit, OnDestroy {
for (const component of preferences.components) {
// Only display get the notification preferences.
component.notifications = component.notifications.filter((notification) =>
notification.preferencekey == AddonMessagesProvider.NOTIFICATION_PREFERENCES_KEY);
notification.preferencekey === ADDON_MESSAGES_NOTIFICATION_PREFERENCES_KEY);
if (this.loggedInOffLegacyMode) {
// Load enabled from loggedin / loggedoff values.

View File

@ -14,7 +14,6 @@
import { Injectable } from '@angular/core';
import {
AddonMessagesProvider,
AddonMessages,
} from '../messages';
import { CoreMainMenuHandler, CoreMainMenuHandlerToDisplay } from '@features/mainmenu/services/mainmenu-delegate';
@ -28,6 +27,10 @@ import {
import { CorePushNotificationsDelegate } from '@features/pushnotifications/services/push-delegate';
import { makeSingleton } from '@singletons';
import { CoreMainMenuProvider } from '@features/mainmenu/services/mainmenu';
import {
ADDON_MESSAGES_UNREAD_CONVERSATION_COUNTS_EVENT,
ADDON_MESSAGES_CONTACT_REQUESTS_COUNT_EVENT,
} from '@addons/messages/constants';
/**
* Handler to inject an option into main menu.
@ -58,14 +61,14 @@ export class AddonMessagesMainMenuHandlerService implements CoreMainMenuHandler,
constructor() {
CoreEvents.on(AddonMessagesProvider.UNREAD_CONVERSATION_COUNTS_EVENT, (data) => {
CoreEvents.on(ADDON_MESSAGES_UNREAD_CONVERSATION_COUNTS_EVENT, (data) => {
this.unreadCount = data.favourites + data.individual + data.group + data.self;
this.orMore = !!data.orMore;
data.siteId && this.updateBadge(data.siteId);
});
CoreEvents.on(AddonMessagesProvider.CONTACT_REQUESTS_COUNT_EVENT, (data) => {
CoreEvents.on(ADDON_MESSAGES_CONTACT_REQUESTS_COUNT_EVENT, (data) => {
this.contactRequestsCount = data.count;
data.siteId && this.updateBadge(data.siteId);

View File

@ -18,7 +18,6 @@ import {
AddonMessagesOffline, AddonMessagesOfflineAnyMessagesFormatted,
} from './messages-offline';
import {
AddonMessagesProvider,
AddonMessages,
AddonMessagesGetMessagesWSParams,
} from './messages';
@ -33,6 +32,20 @@ import { CoreError } from '@classes/errors/error';
import { CoreSiteWSPreSets } from '@classes/sites/authenticated-site';
import { CoreWait } from '@singletons/wait';
import { CoreErrorHelper, CoreErrorObject } from '@services/error-helper';
import { ADDON_MESSAGES_AUTO_SYNCED, ADDON_MESSAGES_LIMIT_MESSAGES } from '../constants';
declare module '@singletons/events' {
/**
* Augment CoreEventsData interface with events specific to this service.
*
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[ADDON_MESSAGES_AUTO_SYNCED]: AddonMessagesSyncEvents;
}
}
/**
* Service to sync messages.
@ -40,8 +53,6 @@ import { CoreErrorHelper, CoreErrorObject } from '@services/error-helper';
@Injectable({ providedIn: 'root' })
export class AddonMessagesSyncProvider extends CoreSyncBaseProvider<AddonMessagesSyncEvents> {
static readonly AUTO_SYNCED = 'addon_messages_autom_synced';
constructor() {
super('AddonMessagesSync');
}
@ -113,7 +124,7 @@ export class AddonMessagesSyncProvider extends CoreSyncBaseProvider<AddonMessage
}
// Sync successful, send event.
CoreEvents.trigger(AddonMessagesSyncProvider.AUTO_SYNCED, result, siteId);
CoreEvents.trigger(ADDON_MESSAGES_AUTO_SYNCED, result, siteId);
return;
}));
@ -126,7 +137,7 @@ export class AddonMessagesSyncProvider extends CoreSyncBaseProvider<AddonMessage
}
// Sync successful, send event.
CoreEvents.trigger(AddonMessagesSyncProvider.AUTO_SYNCED, result, siteId);
CoreEvents.trigger(ADDON_MESSAGES_AUTO_SYNCED, result, siteId);
return;
}));
@ -305,7 +316,7 @@ export class AddonMessagesSyncProvider extends CoreSyncBaseProvider<AddonMessage
const params: AddonMessagesGetMessagesWSParams = {
useridto: userId,
useridfrom: siteCurrentUserId,
limitnum: AddonMessagesProvider.LIMIT_MESSAGES,
limitnum: ADDON_MESSAGES_LIMIT_MESSAGES,
};
const preSets: CoreSiteWSPreSets = {
cacheKey: AddonMessages.getCacheKeyForDiscussion(userId),

View File

@ -30,11 +30,28 @@ import { CoreSite } from '@classes/sites/site';
import { CoreWSExternalWarning } from '@services/ws';
import { makeSingleton } from '@singletons';
import { CoreError } from '@classes/errors/error';
import { AddonMessagesSyncEvents, AddonMessagesSyncProvider } from './messages-sync';
import { CoreWSError } from '@classes/errors/wserror';
import { AddonNotificationsPreferencesNotificationProcessorState } from '@addons/notifications/services/notifications';
import { CoreSiteWSPreSets } from '@classes/sites/authenticated-site';
import { CoreCacheUpdateFrequency } from '@/core/constants';
import {
ADDON_MESSAGES_CONTACT_REQUESTS_COUNT_EVENT,
ADDON_MESSAGES_LIMIT_CONTACTS,
ADDON_MESSAGES_LIMIT_INITIAL_USER_SEARCH,
ADDON_MESSAGES_LIMIT_MESSAGES,
ADDON_MESSAGES_LIMIT_SEARCH,
ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT,
ADDON_MESSAGES_NEW_MESSAGE_EVENT,
ADDON_MESSAGES_OPEN_CONVERSATION_EVENT,
ADDON_MESSAGES_POLL_INTERVAL,
ADDON_MESSAGES_PUSH_SIMULATION_COMPONENT,
ADDON_MESSAGES_READ_CHANGED_EVENT,
ADDON_MESSAGES_UNREAD_CONVERSATION_COUNTS_EVENT,
ADDON_MESSAGES_UPDATE_CONVERSATION_LIST_EVENT,
AddonMessagesMessageConversationType,
AddonMessagesMessagePrivacy,
AddonMessagesUpdateConversationAction,
} from '../constants';
declare module '@singletons/events' {
@ -44,24 +61,17 @@ declare module '@singletons/events' {
* @see https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation
*/
export interface CoreEventsData {
[AddonMessagesProvider.NEW_MESSAGE_EVENT]: AddonMessagesNewMessagedEventData;
[AddonMessagesProvider.READ_CHANGED_EVENT]: AddonMessagesReadChangedEventData;
[AddonMessagesProvider.OPEN_CONVERSATION_EVENT]: AddonMessagesOpenConversationEventData;
[AddonMessagesProvider.UPDATE_CONVERSATION_LIST_EVENT]: AddonMessagesUpdateConversationListEventData;
[AddonMessagesProvider.MEMBER_INFO_CHANGED_EVENT]: AddonMessagesMemberInfoChangedEventData;
[AddonMessagesProvider.UNREAD_CONVERSATION_COUNTS_EVENT]: AddonMessagesUnreadConversationCountsEventData;
[AddonMessagesProvider.CONTACT_REQUESTS_COUNT_EVENT]: AddonMessagesContactRequestCountEventData;
[AddonMessagesSyncProvider.AUTO_SYNCED]: AddonMessagesSyncEvents;
[ADDON_MESSAGES_NEW_MESSAGE_EVENT]: AddonMessagesNewMessagedEventData;
[ADDON_MESSAGES_READ_CHANGED_EVENT]: AddonMessagesReadChangedEventData;
[ADDON_MESSAGES_OPEN_CONVERSATION_EVENT]: AddonMessagesOpenConversationEventData;
[ADDON_MESSAGES_UPDATE_CONVERSATION_LIST_EVENT]: AddonMessagesUpdateConversationListEventData;
[ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT]: AddonMessagesMemberInfoChangedEventData;
[ADDON_MESSAGES_UNREAD_CONVERSATION_COUNTS_EVENT]: AddonMessagesUnreadConversationCountsEventData;
[ADDON_MESSAGES_CONTACT_REQUESTS_COUNT_EVENT]: AddonMessagesContactRequestCountEventData;
}
}
export const enum AddonMessagesUpdateConversationAction {
MUTE = 'mute',
FAVOURITE = 'favourite',
DELETE = 'delete',
}
/**
* Service to handle messages.
*/
@ -70,27 +80,87 @@ export class AddonMessagesProvider {
protected static readonly ROOT_CACHE_KEY = 'mmaMessages:';
static readonly NEW_MESSAGE_EVENT = 'addon_messages_new_message_event';
static readonly READ_CHANGED_EVENT = 'addon_messages_read_changed_event';
static readonly OPEN_CONVERSATION_EVENT = 'addon_messages_open_conversation_event'; // Notify a conversation should be opened.
static readonly UPDATE_CONVERSATION_LIST_EVENT = 'addon_messages_update_conversation_list_event';
static readonly MEMBER_INFO_CHANGED_EVENT = 'addon_messages_member_changed_event';
static readonly UNREAD_CONVERSATION_COUNTS_EVENT = 'addon_messages_unread_conversation_counts_event';
static readonly CONTACT_REQUESTS_COUNT_EVENT = 'addon_messages_contact_requests_count_event';
static readonly POLL_INTERVAL = 10000;
static readonly PUSH_SIMULATION_COMPONENT = 'AddonMessagesPushSimulation';
/**
* @deprecated since 5.0. Use ADDON_MESSAGES_NEW_MESSAGE_EVENT instead.
*/
static readonly NEW_MESSAGE_EVENT = ADDON_MESSAGES_NEW_MESSAGE_EVENT;
/**
* @deprecated since 5.0. Use ADDON_MESSAGES_READ_CHANGED_EVENT instead.
*/
static readonly READ_CHANGED_EVENT = ADDON_MESSAGES_READ_CHANGED_EVENT;
/**
* @deprecated since 5.0. Use ADDON_MESSAGES_OPEN_CONVERSATION_EVENT instead.
*/
static readonly OPEN_CONVERSATION_EVENT = ADDON_MESSAGES_OPEN_CONVERSATION_EVENT;
/**
* @deprecated since 5.0. Use ADDON_MESSAGES_UPDATE_CONVERSATION_LIST_EVENT instead.
*/
static readonly UPDATE_CONVERSATION_LIST_EVENT = ADDON_MESSAGES_UPDATE_CONVERSATION_LIST_EVENT;
/**
* @deprecated since 5.0. Use ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT instead.
*/
static readonly MEMBER_INFO_CHANGED_EVENT = ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT;
/**
* @deprecated since 5.0. Use ADDON_MESSAGES_UNREAD_CONVERSATION_COUNTS_EVENT instead.
*/
static readonly UNREAD_CONVERSATION_COUNTS_EVENT = ADDON_MESSAGES_UNREAD_CONVERSATION_COUNTS_EVENT;
/**
* @deprecated since 5.0. Use ADDON_MESSAGES_CONTACT_REQUESTS_COUNT_EVENT instead.
*/
static readonly CONTACT_REQUESTS_COUNT_EVENT = ADDON_MESSAGES_CONTACT_REQUESTS_COUNT_EVENT;
/**
* @deprecated since 5.0. Use ADDON_MESSAGES_POLL_INTERVAL instead.
*/
static readonly POLL_INTERVAL = ADDON_MESSAGES_POLL_INTERVAL;
/**
* @deprecated since 5.0. Use ADDON_MESSAGES_PUSH_SIMULATION_COMPONENT instead.
*/
static readonly PUSH_SIMULATION_COMPONENT = ADDON_MESSAGES_PUSH_SIMULATION_COMPONENT;
static readonly MESSAGE_PRIVACY_COURSEMEMBER = 0; // Privacy setting for being messaged by anyone within courses user is member.
static readonly MESSAGE_PRIVACY_ONLYCONTACTS = 1; // Privacy setting for being messaged only by contacts.
static readonly MESSAGE_PRIVACY_SITE = 2; // Privacy setting for being messaged by anyone on the site.
static readonly MESSAGE_CONVERSATION_TYPE_INDIVIDUAL = 1; // An individual conversation.
static readonly MESSAGE_CONVERSATION_TYPE_GROUP = 2; // A group conversation.
static readonly MESSAGE_CONVERSATION_TYPE_SELF = 3; // A self conversation.
static readonly LIMIT_CONTACTS = 50;
static readonly LIMIT_MESSAGES = 50;
static readonly LIMIT_INITIAL_USER_SEARCH = 3;
static readonly LIMIT_SEARCH = 50;
/**
* @deprecated since 5.0. Use AddonMessagesMessagePrivacy.COURSEMEMBER instead.
*/
static readonly MESSAGE_PRIVACY_COURSEMEMBER = AddonMessagesMessagePrivacy.COURSEMEMBER;
/**
* @deprecated since 5.0. Use AddonMessagesMessagePrivacy.ONLYCONTACTS instead.
*/
static readonly MESSAGE_PRIVACY_ONLYCONTACTS = AddonMessagesMessagePrivacy.ONLYCONTACTS;
/**
* @deprecated since 5.0. Use AddonMessagesMessagePrivacy.SITE instead.
*/
static readonly MESSAGE_PRIVACY_SITE = AddonMessagesMessagePrivacy.SITE;
/**
* @deprecated since 5.0. Use AddonMessagesMessageConversationType.INDIVIDUAL instead.
*/
static readonly MESSAGE_CONVERSATION_TYPE_INDIVIDUAL = AddonMessagesMessageConversationType.INDIVIDUAL;
/**
* @deprecated since 5.0. Use AddonMessagesMessageConversationType.GROUP instead.
*/
static readonly MESSAGE_CONVERSATION_TYPE_GROUP = AddonMessagesMessageConversationType.GROUP;
/**
* @deprecated since 5.0. Use AddonMessagesMessageConversationType.SELF instead.
*/
static readonly MESSAGE_CONVERSATION_TYPE_SELF = AddonMessagesMessageConversationType.SELF;
/**
* @deprecated since 5.0. Use ADDON_MESSAGES_LIMIT_CONTACTS instead.
*/
static readonly LIMIT_CONTACTS = ADDON_MESSAGES_LIMIT_CONTACTS;
/**
* @deprecated since 5.0. Use ADDON_MESSAGES_LIMIT_MESSAGES instead.
*/
static readonly LIMIT_MESSAGES = ADDON_MESSAGES_LIMIT_MESSAGES;
/**
* @deprecated since 5.0. Use ADDON_MESSAGES_LIMIT_INITIAL_USER_SEARCH instead.
*/
static readonly LIMIT_INITIAL_USER_SEARCH = ADDON_MESSAGES_LIMIT_INITIAL_USER_SEARCH;
/**
* @deprecated since 5.0. Use ADDON_MESSAGES_LIMIT_SEARCH instead.
*/
static readonly LIMIT_SEARCH = ADDON_MESSAGES_LIMIT_SEARCH;
/**
* @deprecated since 5.0. Use ADDON_MESSAGES_NEW_MESSAGE_EVENT instead.
*/
static readonly NOTIFICATION_PREFERENCES_KEY = 'message_provider_moodle_instantmessage';
protected logger: CoreLogger;
@ -148,7 +218,7 @@ export class AddonMessagesProvider {
} finally {
const data: AddonMessagesMemberInfoChangedEventData = { userId, userBlocked: true };
CoreEvents.trigger(AddonMessagesProvider.MEMBER_INFO_CHANGED_EVENT, data, site.id);
CoreEvents.trigger(ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT, data, site.id);
}
}
@ -177,7 +247,7 @@ export class AddonMessagesProvider {
this.refreshContactRequestsCount(site.id),
]).finally(() => {
const data: AddonMessagesMemberInfoChangedEventData = { userId, contactRequestConfirmed: true };
CoreEvents.trigger(AddonMessagesProvider.MEMBER_INFO_CHANGED_EVENT, data, site.id);
CoreEvents.trigger(ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT, data, site.id);
});
}
@ -213,7 +283,7 @@ export class AddonMessagesProvider {
await this.invalidateAllMemberInfo(userId, site).finally(() => {
const data: AddonMessagesMemberInfoChangedEventData = { userId, contactRequestCreated: true };
CoreEvents.trigger(AddonMessagesProvider.MEMBER_INFO_CHANGED_EVENT, data, site.id);
CoreEvents.trigger(ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT, data, site.id);
});
}
@ -240,7 +310,7 @@ export class AddonMessagesProvider {
this.refreshContactRequestsCount(site.id),
]).finally(() => {
const data: AddonMessagesMemberInfoChangedEventData = { userId, contactRequestDeclined: true };
CoreEvents.trigger(AddonMessagesProvider.MEMBER_INFO_CHANGED_EVENT, data, site.id);
CoreEvents.trigger(ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT, data, site.id);
});
}
@ -374,8 +444,8 @@ export class AddonMessagesProvider {
conversation.lastmessagedate = lastMessage ? lastMessage.timecreated : undefined;
conversation.sentfromcurrentuser = lastMessage ? lastMessage.useridfrom == userId : undefined;
if (conversation.type != AddonMessagesProvider.MESSAGE_CONVERSATION_TYPE_GROUP) {
const isIndividual = conversation.type == AddonMessagesProvider.MESSAGE_CONVERSATION_TYPE_INDIVIDUAL;
if (conversation.type != AddonMessagesMessageConversationType.GROUP) {
const isIndividual = conversation.type == AddonMessagesMessageConversationType.INDIVIDUAL;
const otherUser = conversation.members.find((member) =>
(isIndividual && member.id != userId) || (!isIndividual && member.id == userId));
@ -680,14 +750,14 @@ export class AddonMessagesProvider {
* Get the list of user contacts.
*
* @param limitFrom Position of the first contact to fetch.
* @param limitNum Number of contacts to fetch. Default is AddonMessagesProvider.LIMIT_CONTACTS.
* @param limitNum Number of contacts to fetch. Default is ADDON_MESSAGES_LIMIT_CONTACTS.
* @param siteId Site ID. If not defined, use current site.
* @returns Promise resolved with the list of user contacts.
* @since 3.6
*/
async getUserContacts(
limitFrom: number = 0,
limitNum: number = AddonMessagesProvider.LIMIT_CONTACTS,
limitNum: number = ADDON_MESSAGES_LIMIT_CONTACTS,
siteId?: string,
): Promise<{contacts: AddonMessagesConversationMember[]; canLoadMore: boolean}> {
const site = await CoreSites.getSite(siteId);
@ -724,14 +794,14 @@ export class AddonMessagesProvider {
* Get the contact request sent to the current user.
*
* @param limitFrom Position of the first contact request to fetch.
* @param limitNum Number of contact requests to fetch. Default is AddonMessagesProvider.LIMIT_CONTACTS.
* @param limitNum Number of contact requests to fetch. Default is ADDON_MESSAGES_LIMIT_CONTACTS.
* @param siteId Site ID. If not defined, use current site.
* @returns Promise resolved with the list of contact requests.
* @since 3.6
*/
async getContactRequests(
limitFrom: number = 0,
limitNum: number = AddonMessagesProvider.LIMIT_CONTACTS,
limitNum: number = ADDON_MESSAGES_LIMIT_CONTACTS,
siteId?: string,
): Promise<{requests: AddonMessagesConversationMember[]; canLoadMore: boolean}> {
const site = await CoreSites.getSite(siteId);
@ -792,7 +862,7 @@ export class AddonMessagesProvider {
};
// Notify the new count so all badges are updated.
CoreEvents.trigger(AddonMessagesProvider.CONTACT_REQUESTS_COUNT_EVENT, data , site.id);
CoreEvents.trigger(ADDON_MESSAGES_CONTACT_REQUESTS_COUNT_EVENT, data , site.id);
return data.count;
@ -936,7 +1006,7 @@ export class AddonMessagesProvider {
): Promise<{members: AddonMessagesConversationMember[]; canLoadMore: boolean}> {
const site = await CoreSites.getSite(siteId);
userId = userId || site.getUserId();
limitTo = limitTo ?? AddonMessagesProvider.LIMIT_MESSAGES;
limitTo = limitTo ?? ADDON_MESSAGES_LIMIT_MESSAGES;
const preSets: CoreSiteWSPreSets = {
cacheKey: this.getCacheKeyForConversationMembers(userId, conversationId),
@ -984,7 +1054,7 @@ export class AddonMessagesProvider {
options.userId = options.userId || site.getUserId();
options.limitFrom = options.limitFrom || 0;
options.limitTo = options.limitTo ?? AddonMessagesProvider.LIMIT_MESSAGES;
options.limitTo = options.limitTo ?? ADDON_MESSAGES_LIMIT_MESSAGES;
options.timeFrom = options.timeFrom || 0;
options.newestFirst = options.newestFirst ?? true;
@ -1077,7 +1147,7 @@ export class AddonMessagesProvider {
const params: AddonMessagesGetConversationsWSParams = {
userid: userId,
limitfrom: limitFrom,
limitnum: AddonMessagesProvider.LIMIT_MESSAGES + 1,
limitnum: ADDON_MESSAGES_LIMIT_MESSAGES + 1,
};
if (forceCache) {
@ -1092,7 +1162,7 @@ export class AddonMessagesProvider {
if (favourites !== undefined && favourites != null) {
params.favourites = !!favourites;
}
if (site.isVersionGreaterEqualThan('3.7') && type != AddonMessagesProvider.MESSAGE_CONVERSATION_TYPE_GROUP) {
if (site.isVersionGreaterEqualThan('3.7') && type != AddonMessagesMessageConversationType.GROUP) {
// Add self conversation to the list.
params.mergeself = true;
}
@ -1113,12 +1183,12 @@ export class AddonMessagesProvider {
// Format the conversations, adding some calculated fields.
const conversations = response.conversations
.slice(0, AddonMessagesProvider.LIMIT_MESSAGES)
.slice(0, ADDON_MESSAGES_LIMIT_MESSAGES)
.map((conversation) => this.formatConversation(conversation, userId!));
return {
conversations,
canLoadMore: response.conversations.length > AddonMessagesProvider.LIMIT_MESSAGES,
canLoadMore: response.conversations.length > ADDON_MESSAGES_LIMIT_MESSAGES,
};
}
@ -1145,9 +1215,9 @@ export class AddonMessagesProvider {
const counts = {
favourites: result.favourites,
individual: result.types[AddonMessagesProvider.MESSAGE_CONVERSATION_TYPE_INDIVIDUAL],
group: result.types[AddonMessagesProvider.MESSAGE_CONVERSATION_TYPE_GROUP],
self: result.types[AddonMessagesProvider.MESSAGE_CONVERSATION_TYPE_SELF] || 0,
individual: result.types[AddonMessagesMessageConversationType.INDIVIDUAL],
group: result.types[AddonMessagesMessageConversationType.GROUP],
self: result.types[AddonMessagesMessageConversationType.SELF] || 0,
};
return counts;
@ -1190,7 +1260,7 @@ export class AddonMessagesProvider {
const params: AddonMessagesGetMessagesWSParams = {
useridto: site.getUserId(),
useridfrom: userId,
limitnum: AddonMessagesProvider.LIMIT_MESSAGES,
limitnum: ADDON_MESSAGES_LIMIT_MESSAGES,
};
if (lfReceivedUnread > 0 || lfReceivedRead > 0 || lfSentUnread > 0 || lfSentRead > 0) {
@ -1213,13 +1283,13 @@ export class AddonMessagesProvider {
result.messages = result.messages.concat(sent);
const hasSent = sent.length > 0;
if (result.messages.length > AddonMessagesProvider.LIMIT_MESSAGES) {
if (result.messages.length > ADDON_MESSAGES_LIMIT_MESSAGES) {
// Sort messages and get the more recent ones.
result.canLoadMore = true;
result.messages = this.sortMessages(result['messages']);
result.messages = result.messages.slice(-AddonMessagesProvider.LIMIT_MESSAGES);
result.messages = result.messages.slice(-ADDON_MESSAGES_LIMIT_MESSAGES);
} else {
result.canLoadMore = result.messages.length == AddonMessagesProvider.LIMIT_MESSAGES && (!hasReceived || !hasSent);
result.canLoadMore = result.messages.length == ADDON_MESSAGES_LIMIT_MESSAGES && (!hasReceived || !hasSent);
}
if (excludePending) {
@ -1290,7 +1360,7 @@ export class AddonMessagesProvider {
const params: AddonMessagesGetMessagesWSParams = {
useridto: currentUserId,
useridfrom: 0,
limitnum: AddonMessagesProvider.LIMIT_MESSAGES,
limitnum: ADDON_MESSAGES_LIMIT_MESSAGES,
};
const preSets: CoreSiteWSPreSets = {
@ -1573,9 +1643,9 @@ export class AddonMessagesProvider {
counts = {
favourites: result.favourites,
individual: result.types[AddonMessagesProvider.MESSAGE_CONVERSATION_TYPE_INDIVIDUAL],
group: result.types[AddonMessagesProvider.MESSAGE_CONVERSATION_TYPE_GROUP],
self: result.types[AddonMessagesProvider.MESSAGE_CONVERSATION_TYPE_SELF] || 0,
individual: result.types[AddonMessagesMessageConversationType.INDIVIDUAL],
group: result.types[AddonMessagesMessageConversationType.GROUP],
self: result.types[AddonMessagesMessageConversationType.SELF] || 0,
};
} else {
@ -1593,7 +1663,7 @@ export class AddonMessagesProvider {
}
// Notify the new counts so all views are updated.
CoreEvents.trigger(AddonMessagesProvider.UNREAD_CONVERSATION_COUNTS_EVENT, counts, site.id);
CoreEvents.trigger(ADDON_MESSAGES_UNREAD_CONVERSATION_COUNTS_EVENT, counts, site.id);
return counts;
}
@ -1618,7 +1688,7 @@ export class AddonMessagesProvider {
const params: AddonMessagesGetMessagesWSParams = {
read: false,
limitfrom: 0,
limitnum: AddonMessagesProvider.LIMIT_MESSAGES,
limitnum: ADDON_MESSAGES_LIMIT_MESSAGES,
useridto: site.getUserId(),
useridfrom: 0,
};
@ -2250,7 +2320,7 @@ export class AddonMessagesProvider {
this.invalidateContactsCache(site.id),
]).then(() => {
const data: AddonMessagesMemberInfoChangedEventData = { userId, contactRemoved: true };
CoreEvents.trigger(AddonMessagesProvider.MEMBER_INFO_CHANGED_EVENT, data, site.id);
CoreEvents.trigger(ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT, data, site.id);
return;
});
@ -2297,7 +2367,7 @@ export class AddonMessagesProvider {
* @param query The query string.
* @param userId The user ID. If not defined, current user.
* @param limitFrom Position of the first result to get. Defaults to 0.
* @param limitNum Number of results to get. Defaults to AddonMessagesProvider.LIMIT_SEARCH.
* @param limitNum Number of results to get. Defaults to ADDON_MESSAGES_LIMIT_SEARCH.
* @param siteId Site ID. If not defined, current site.
* @returns Promise resolved with the results.
*/
@ -2305,7 +2375,7 @@ export class AddonMessagesProvider {
query: string,
userId?: number,
limitFrom: number = 0,
limitNum: number = AddonMessagesProvider.LIMIT_SEARCH,
limitNum: number = ADDON_MESSAGES_LIMIT_SEARCH,
siteId?: string,
): Promise<{messages: AddonMessagesMessageAreaContact[]; canLoadMore: boolean}> {
const site = await CoreSites.getSite(siteId);
@ -2350,7 +2420,7 @@ export class AddonMessagesProvider {
*
* @param query Text to search for.
* @param limitFrom Position of the first found user to fetch.
* @param limitNum Number of found users to fetch. Defaults to AddonMessagesProvider.LIMIT_SEARCH.
* @param limitNum Number of found users to fetch. Defaults to ADDON_MESSAGES_LIMIT_SEARCH.
* @param siteId Site ID. If not defined, use current site.
* @returns Resolved with two lists of found users: contacts and non-contacts.
* @since 3.6
@ -2358,7 +2428,7 @@ export class AddonMessagesProvider {
async searchUsers(
query: string,
limitFrom: number = 0,
limitNum: number = AddonMessagesProvider.LIMIT_SEARCH,
limitNum: number = ADDON_MESSAGES_LIMIT_SEARCH,
siteId?: string,
): Promise<{
contacts: AddonMessagesConversationMember[];
@ -2828,7 +2898,7 @@ export class AddonMessagesProvider {
} finally {
const data: AddonMessagesMemberInfoChangedEventData = { userId, userUnblocked: true };
CoreEvents.trigger(AddonMessagesProvider.MEMBER_INFO_CHANGED_EVENT, data, site.id);
CoreEvents.trigger(ADDON_MESSAGES_MEMBER_INFO_CHANGED_EVENT, data, site.id);
}
}