From 588cffa96732c1afe73784bbf2010cbaedf37482 Mon Sep 17 00:00:00 2001 From: Rahul Prajapati Date: Wed, 20 Apr 2022 12:42:57 +0000 Subject: [PATCH] [IMP] im_livechat, mail: replace _.str.sprintf to web sprintf MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before this commit: _.str.sprintf was being used After this commit: replaced _.str.sprintf with sprintf Task-2810721 closes odoo/odoo#89217 Signed-off-by: Alexandre Kühn (aku) --- .../src/legacy/models/thread_typing_mixin.js | 7 ++++--- .../static/src/legacy/widgets/feedback.js | 2 +- .../notification_request.js | 3 ++- addons/mail/static/src/js/activity.js | 5 +++-- .../js/views/activity/activity_controller.js | 3 ++- addons/mail/static/src/models/activity_view.js | 9 +++++---- .../models/attachment_delete_confirm_view.js | 3 ++- addons/mail/static/src/models/composer.js | 5 +++-- .../static/src/models/composer_suggestion.js | 7 ++++--- addons/mail/static/src/models/composer_view.js | 4 ++-- addons/mail/static/src/models/discuss.js | 6 +++--- addons/mail/static/src/models/message.js | 3 ++- .../src/models/message_reaction_group.js | 11 ++++++----- .../src/models/message_seen_indicator.js | 13 +++++++------ .../models/messaging_notification_handler.js | 18 +++++++++--------- addons/mail/static/src/models/rtc.js | 5 +++-- addons/mail/static/src/models/thread.js | 7 ++++--- 17 files changed, 62 insertions(+), 49 deletions(-) diff --git a/addons/im_livechat/static/src/legacy/models/thread_typing_mixin.js b/addons/im_livechat/static/src/legacy/models/thread_typing_mixin.js index 3db6fee0436..6c9325c707e 100644 --- a/addons/im_livechat/static/src/legacy/models/thread_typing_mixin.js +++ b/addons/im_livechat/static/src/legacy/models/thread_typing_mixin.js @@ -6,6 +6,7 @@ var Timer = require('im_livechat.legacy.mail.model.Timer'); var Timers = require('im_livechat.legacy.mail.model.Timers'); var core = require('web.core'); +const { sprintf } = require('web.utils'); var _t = core._t; @@ -128,13 +129,13 @@ var ThreadTypingMixin = { if (displayableTypingMembers.length === 0) { return ''; } else if (displayableTypingMembers.length === 1) { - return _.str.sprintf(_t("%s is typing..."), displayableTypingMembers[0].name); + return sprintf(_t("%s is typing..."), displayableTypingMembers[0].name); } else if (displayableTypingMembers.length === 2) { - return _.str.sprintf(_t("%s and %s are typing..."), + return sprintf(_t("%s and %s are typing..."), displayableTypingMembers[0].name, displayableTypingMembers[1].name); } else { - return _.str.sprintf(_t("%s, %s and more are typing..."), + return sprintf(_t("%s, %s and more are typing..."), displayableTypingMembers[0].name, displayableTypingMembers[1].name); } diff --git a/addons/im_livechat/static/src/legacy/widgets/feedback.js b/addons/im_livechat/static/src/legacy/widgets/feedback.js index 878c08ff7d0..ac9255eaace 100644 --- a/addons/im_livechat/static/src/legacy/widgets/feedback.js +++ b/addons/im_livechat/static/src/legacy/widgets/feedback.js @@ -57,7 +57,7 @@ var Feedback = Widget.extend({ this.dp.add(session.rpc('/im_livechat/feedback', args)).then(function (response) { var emoji = RATING_TO_EMOJI[self.rating] || "??"; if (!reason) { - var content = _.str.sprintf(_t("Rating: %s"), emoji); + var content = utils.sprintf(_t("Rating: %s"), emoji); } else { var content = "Rating reason: \n" + reason; diff --git a/addons/mail/static/src/components/notification_request/notification_request.js b/addons/mail/static/src/components/notification_request/notification_request.js index 5a688bf715c..c6c39ad2981 100644 --- a/addons/mail/static/src/components/notification_request/notification_request.js +++ b/addons/mail/static/src/components/notification_request/notification_request.js @@ -1,6 +1,7 @@ /** @odoo-module **/ import { registerMessagingComponent } from '@mail/utils/messaging_component'; +import { sprintf } from '@web/core/utils/strings'; const { Component } = owl; @@ -14,7 +15,7 @@ export class NotificationRequest extends Component { * @returns {string} */ getHeaderText() { - return _.str.sprintf( + return sprintf( this.env._t("%s has a request"), this.messaging.partnerRoot.nameOrDisplayName ); diff --git a/addons/mail/static/src/js/activity.js b/addons/mail/static/src/js/activity.js index 0713d0314c4..0b9cfbff599 100644 --- a/addons/mail/static/src/js/activity.js +++ b/addons/mail/static/src/js/activity.js @@ -6,6 +6,7 @@ import config from 'web.config'; import core from 'web.core'; import field_registry from 'web.field_registry'; import session from 'web.session'; +import { sprintf } from '@web/core/utils/strings'; import framework from 'web.framework'; import time from 'web.time'; @@ -91,13 +92,13 @@ var setDelayLabel = function (activities) { if (diff === -1) { toDisplay = _t("Yesterday"); } else { - toDisplay = _.str.sprintf(_t("%d days overdue"), Math.abs(diff)); + toDisplay = sprintf(_t("%s days overdue"), Math.round(Math.abs(diff))); } } else { // due if (diff === 1) { toDisplay = _t("Tomorrow"); } else { - toDisplay = _.str.sprintf(_t("Due in %d days"), Math.abs(diff)); + toDisplay = sprintf(_t("Due in %s days"), Math.round(Math.abs(diff))); } } } diff --git a/addons/mail/static/src/js/views/activity/activity_controller.js b/addons/mail/static/src/js/views/activity/activity_controller.js index 26e2a8772c5..9d60bd40337 100644 --- a/addons/mail/static/src/js/views/activity/activity_controller.js +++ b/addons/mail/static/src/js/views/activity/activity_controller.js @@ -5,6 +5,7 @@ import '@mail/js/activity'; import BasicController from 'web.BasicController'; import core from 'web.core'; import field_registry from 'web.field_registry'; +import { sprintf } from '@web/core/utils/strings'; import ViewDialogs from 'web.view_dialogs'; var KanbanActivity = field_registry.get('kanban_activity'); @@ -62,7 +63,7 @@ var ActivityController = BasicController.extend({ res_model: state.model, searchViewId: this.searchViewId, domain: this.model.originalDomain, - title: _.str.sprintf(_t("Search: %s"), this.title), + title: sprintf(_t("Search: %s"), this.title), no_create: !this.activeActions.create, disable_multiple_selection: true, context: state.context, diff --git a/addons/mail/static/src/models/activity_view.js b/addons/mail/static/src/models/activity_view.js index 797893e589a..dc09a62eaea 100644 --- a/addons/mail/static/src/models/activity_view.js +++ b/addons/mail/static/src/models/activity_view.js @@ -5,6 +5,7 @@ import { attr, many, one } from '@mail/model/model_field'; import { clear, insertAndReplace, replace } from '@mail/model/model_field_command'; import { auto_str_to_date, getLangDateFormat, getLangDatetimeFormat } from 'web.time'; +import { sprintf } from '@web/core/utils/strings'; registerModel({ name: 'ActivityView', @@ -64,7 +65,7 @@ registerModel({ if (!this.activity.assignee) { return clear(); } - return _.str.sprintf(this.env._t("for %s"), this.activity.assignee.nameOrDisplayName); + return sprintf(this.env._t("for %s"), this.activity.assignee.nameOrDisplayName); }, /** * @private @@ -83,11 +84,11 @@ registerModel({ } else if (diff === -1) { return this.env._t("Yesterday:"); } else if (diff < 0) { - return _.str.sprintf(this.env._t("%d days overdue:"), Math.abs(diff)); + return sprintf(this.env._t("%s days overdue:"), Math.round(Math.abs(diff))); } else if (diff === 1) { return this.env._t("Tomorrow:"); } else { - return _.str.sprintf(this.env._t("Due in %d days:"), Math.abs(diff)); + return sprintf(this.env._t("Due in %s days:"), Math.round(Math.abs(diff))); } }, /** @@ -150,7 +151,7 @@ registerModel({ if (!this.activity.summary) { return clear(); } - return _.str.sprintf(this.env._t("“%s”"), this.activity.summary); + return sprintf(this.env._t("“%s”"), this.activity.summary); }, }, fields: { diff --git a/addons/mail/static/src/models/attachment_delete_confirm_view.js b/addons/mail/static/src/models/attachment_delete_confirm_view.js index abd1ac066b0..c5838bbd7e3 100644 --- a/addons/mail/static/src/models/attachment_delete_confirm_view.js +++ b/addons/mail/static/src/models/attachment_delete_confirm_view.js @@ -3,6 +3,7 @@ import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; import { clear, replace } from '@mail/model/model_field_command'; +import { sprintf } from '@web/core/utils/strings'; registerModel({ name: 'AttachmentDeleteConfirmView', @@ -45,7 +46,7 @@ registerModel({ * @returns {string} */ _computeBody() { - return _.str.sprintf(this.env._t(`Do you really want to delete "%s"?`), this.attachment.displayName); + return sprintf(this.env._t(`Do you really want to delete "%s"?`), this.attachment.displayName); }, /** * @private diff --git a/addons/mail/static/src/models/composer.js b/addons/mail/static/src/models/composer.js index dbbe704e706..d407e7d62a2 100644 --- a/addons/mail/static/src/models/composer.js +++ b/addons/mail/static/src/models/composer.js @@ -3,6 +3,7 @@ import { registerModel } from '@mail/model/model_core'; import { attr, many, one } from '@mail/model/model_field'; import { clear, replace, unlink } from '@mail/model/model_field_command'; +import { sprintf } from '@web/core/utils/strings'; registerModel({ name: 'Composer', @@ -98,9 +99,9 @@ registerModel({ } if (this.thread.model === 'mail.channel') { if (this.thread.correspondent) { - return _.str.sprintf(this.env._t("Message %s..."), this.thread.correspondent.nameOrDisplayName); + return sprintf(this.env._t("Message %s..."), this.thread.correspondent.nameOrDisplayName); } - return _.str.sprintf(this.env._t("Message #%s..."), this.thread.displayName); + return sprintf(this.env._t("Message #%s..."), this.thread.displayName); } if (this.isLog) { return this.env._t("Log an internal note..."); diff --git a/addons/mail/static/src/models/composer_suggestion.js b/addons/mail/static/src/models/composer_suggestion.js index ccee6349c18..a92ac757f59 100644 --- a/addons/mail/static/src/models/composer_suggestion.js +++ b/addons/mail/static/src/models/composer_suggestion.js @@ -3,6 +3,7 @@ import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; import { clear, replace } from '@mail/model/model_field_command'; +import { sprintf } from '@web/core/utils/strings'; /** * Models a suggestion in the composer suggestion. @@ -90,17 +91,17 @@ registerModel({ */ _computeTitle() { if (this.cannedResponse) { - return _.str.sprintf("%s: %s", this.record.source, this.record.substitution); + return sprintf("%s: %s", this.record.source, this.record.substitution); } if (this.thread) { return this.record.name; } if (this.channelCommand) { - return _.str.sprintf("%s: %s", this.record.name, this.record.help); + return sprintf("%s: %s", this.record.name, this.record.help); } if (this.partner) { if (this.record.email) { - return _.str.sprintf("%s (%s)", this.record.nameOrDisplayName, this.record.email); + return sprintf("%s (%s)", this.record.nameOrDisplayName, this.record.email); } return this.record.nameOrDisplayName; } diff --git a/addons/mail/static/src/models/composer_view.js b/addons/mail/static/src/models/composer_view.js index 5e549e64069..37ee081de87 100644 --- a/addons/mail/static/src/models/composer_view.js +++ b/addons/mail/static/src/models/composer_view.js @@ -8,7 +8,7 @@ import { OnChange } from '@mail/model/model_onchange'; import { addLink, escapeAndCompactTextContent, parseAndTransform } from '@mail/js/utils'; import { isEventHandled, markEventHandled } from '@mail/utils/utils'; -import { escape } from '@web/core/utils/strings'; +import { escape, sprintf } from '@web/core/utils/strings'; registerModel({ name: 'ComposerView', @@ -635,7 +635,7 @@ registerModel({ this.delete(); } this.env.services['notification'].notify({ - message: _.str.sprintf(this.env._t(`Message posted on "%s"`), message.originThread.displayName), + message: sprintf(this.env._t(`Message posted on "%s"`), message.originThread.displayName), type: 'info', }); } diff --git a/addons/mail/static/src/models/discuss.js b/addons/mail/static/src/models/discuss.js index d90c09b90ce..591dd6f3d8b 100644 --- a/addons/mail/static/src/models/discuss.js +++ b/addons/mail/static/src/models/discuss.js @@ -3,7 +3,7 @@ import { registerModel } from '@mail/model/model_core'; import { attr, many, one } from '@mail/model/model_field'; import { clear, insertAndReplace, link, replace, unlink } from '@mail/model/model_field_command'; -import { escape } from '@web/core/utils/strings'; +import { escape, sprintf } from '@web/core/utils/strings'; registerModel({ name: 'Discuss', @@ -79,14 +79,14 @@ registerModel({ // XDU FIXME could use a component but be careful with owl's // renderToString https://github.com/odoo/owl/issues/708 items.push({ - label: _.str.sprintf( + label: sprintf( `${this.env._t('Create %s')}`, `${escapedValue}`, ), escapedValue, special: 'public' }, { - label: _.str.sprintf( + label: sprintf( `${this.env._t('Create %s')}`, `${escapedValue}`, ), diff --git a/addons/mail/static/src/models/message.js b/addons/mail/static/src/models/message.js index 0c08b5611c1..5c1947cd799 100644 --- a/addons/mail/static/src/models/message.js +++ b/addons/mail/static/src/models/message.js @@ -7,6 +7,7 @@ import emojis from '@mail/js/emojis'; import { addLink, htmlToTextContentInline, parseAndTransform, timeFromNow } from '@mail/js/utils'; import { session } from '@web/session'; +import { sprintf } from '@web/core/utils/strings'; import { format } from 'web.field_utils'; import { getLangDatetimeFormat, str_to_datetime } from 'web.time'; @@ -610,7 +611,7 @@ registerModel({ _computeTrackingValues() { return this.tracking_value_ids.map(trackingValue => { const value = Object.assign({}, trackingValue); - value.changed_field = _.str.sprintf(this.env._t("%s:"), value.changed_field); + value.changed_field = sprintf(this.env._t("%s:"), value.changed_field); /** * Maps tracked field type to a JS formatter. Tracking values are * not always stored in the same field type as their origin type. diff --git a/addons/mail/static/src/models/message_reaction_group.js b/addons/mail/static/src/models/message_reaction_group.js index 2ba046deff6..e2a028f7721 100644 --- a/addons/mail/static/src/models/message_reaction_group.js +++ b/addons/mail/static/src/models/message_reaction_group.js @@ -4,6 +4,7 @@ import { registerModel } from '@mail/model/model_core'; import { attr, many, one } from '@mail/model/model_field'; import { insertAndReplace } from '@mail/model/model_field_command'; import { markEventHandled } from '@mail/utils/utils'; +import { sprintf } from '@web/core/utils/strings'; registerModel({ name: 'MessageReactionGroup', @@ -60,15 +61,15 @@ registerModel({ ]; switch (length) { case 1: - return _.str.sprintf(this.env._t('%s has reacted with %s'), firstUser, this.content); + return sprintf(this.env._t('%s has reacted with %s'), firstUser, this.content); case 2: - return _.str.sprintf(this.env._t('%s and %s have reacted with %s'), firstUser, secondUser, this.content); + return sprintf(this.env._t('%s and %s have reacted with %s'), firstUser, secondUser, this.content); case 3: - return _.str.sprintf(this.env._t('%s, %s, %s have reacted with %s'), firstUser, secondUser, thirdUser, this.content); + return sprintf(this.env._t('%s, %s, %s have reacted with %s'), firstUser, secondUser, thirdUser, this.content); case 4: - return _.str.sprintf(this.env._t('%s, %s, %s and 1 other person have reacted with %s'), firstUser, secondUser, thirdUser, this.content); + return sprintf(this.env._t('%s, %s, %s and 1 other person have reacted with %s'), firstUser, secondUser, thirdUser, this.content); default: - return _.str.sprintf(this.env._t('%s, %s, %s and %s other persons have reacted with %s'), firstUser, secondUser, thirdUser, length - 3, this.content); + return sprintf(this.env._t('%s, %s, %s and %s other persons have reacted with %s'), firstUser, secondUser, thirdUser, length - 3, this.content); } }, }, diff --git a/addons/mail/static/src/models/message_seen_indicator.js b/addons/mail/static/src/models/message_seen_indicator.js index a97b653fe02..0838a1914e2 100644 --- a/addons/mail/static/src/models/message_seen_indicator.js +++ b/addons/mail/static/src/models/message_seen_indicator.js @@ -3,6 +3,7 @@ import { registerModel } from '@mail/model/model_core'; import { attr, many, one } from '@mail/model/model_field'; import { clear, replace, unlinkAll } from '@mail/model/model_field_command'; +import { sprintf } from '@web/core/utils/strings'; registerModel({ name: 'MessageSeenIndicator', @@ -181,19 +182,19 @@ registerModel({ return partner.nameOrDisplayName; }); if (partnersThatHaveSeen.length === 1) { - return _.str.sprintf( + return sprintf( this.env._t("Seen by %s"), partnersThatHaveSeen[0] ); } if (partnersThatHaveSeen.length === 2) { - return _.str.sprintf( + return sprintf( this.env._t("Seen by %s and %s"), partnersThatHaveSeen[0], partnersThatHaveSeen[1] ); } - return _.str.sprintf( + return sprintf( this.env._t("Seen by %s, %s and more"), partnersThatHaveSeen[0], partnersThatHaveSeen[1] @@ -210,19 +211,19 @@ registerModel({ return partner.nameOrDisplayName; }); if (partnersThatHaveFetched.length === 1) { - return _.str.sprintf( + return sprintf( this.env._t("Received by %s"), partnersThatHaveFetched[0] ); } if (partnersThatHaveFetched.length === 2) { - return _.str.sprintf( + return sprintf( this.env._t("Received by %s and %s"), partnersThatHaveFetched[0], partnersThatHaveFetched[1] ); } - return _.str.sprintf( + return sprintf( this.env._t("Received by %s, %s and more"), partnersThatHaveFetched[0], partnersThatHaveFetched[1] diff --git a/addons/mail/static/src/models/messaging_notification_handler.js b/addons/mail/static/src/models/messaging_notification_handler.js index 370c3f2018c..b918940a924 100644 --- a/addons/mail/static/src/models/messaging_notification_handler.js +++ b/addons/mail/static/src/models/messaging_notification_handler.js @@ -4,7 +4,7 @@ import { registerModel } from '@mail/model/model_core'; import { decrement, increment, insert, insertAndReplace, link, replace, unlink } from '@mail/model/model_field_command'; import { htmlToTextContentInline } from '@mail/js/utils'; -import { escape } from '@web/core/utils/strings'; +import { escape, sprintf } from '@web/core/utils/strings'; import { str_to_datetime } from 'web.time'; import { Markup } from 'web.utils'; import { renderToString } from "@web/core/utils/render"; @@ -190,7 +190,7 @@ registerModel({ if (this.messaging.currentUser && invitedByUserId !== this.messaging.currentUser.id) { // Current user was invited by someone else. this.env.services['notification'].notify({ - message: _.str.sprintf( + message: sprintf( this.env._t("You have been invited to #%s"), channel.displayName ), @@ -612,7 +612,7 @@ registerModel({ if (!channel) { return; } - const message = _.str.sprintf(this.env._t("You unsubscribed from %s."), channel.displayName); + const message = sprintf(this.env._t("You unsubscribed from %s."), channel.displayName); this.env.services['notification'].notify({ message, type: 'info' }); // We assume that arriving here the server has effectively // unpinned the channel @@ -634,7 +634,7 @@ registerModel({ if (!channel) { return; } - const message = _.str.sprintf(this.env._t("You unpinned your conversation with %s."), channel.displayName); + const message = sprintf(this.env._t("You unpinned your conversation with %s."), channel.displayName); this.env.services['notification'].notify({ message, type: 'info' }); // We assume that arriving here the server has effectively // unpinned the channel @@ -653,7 +653,7 @@ registerModel({ // If the current user invited a new user, and the new user is // connecting for the first time while the current user is present // then open a chat for the current user with the new user. - const message = _.str.sprintf(this.env._t('%s connected'), username); + const message = sprintf(this.env._t('%s connected'), username); const title = this.env._t("This is their first connection. Wish them luck."); this.env.services['bus_service'].sendNotification({ message, title, type: 'info' }); const chat = await this.async(() => this.messaging.getChat({ partnerId })); @@ -685,7 +685,7 @@ registerModel({ }); const channelName = channel.displayName; const channelNameWithIcon = channelIcon + channelName; - notificationTitle = _.str.sprintf( + notificationTitle = sprintf( this.env._t("%s from %s"), author.nameOrDisplayName, channelNameWithIcon @@ -704,11 +704,11 @@ registerModel({ }); messaging.update({ outOfFocusUnreadMessageCounter: increment() }); const titlePattern = messaging.outOfFocusUnreadMessageCounter === 1 - ? this.env._t("%d Message") - : this.env._t("%d Messages"); + ? this.env._t("%s Message") + : this.env._t("%s Messages"); this.env.bus.trigger('set_title_part', { part: '_chat', - title: _.str.sprintf(titlePattern, messaging.outOfFocusUnreadMessageCounter), + title: sprintf(titlePattern, messaging.outOfFocusUnreadMessageCounter), }); }, /** diff --git a/addons/mail/static/src/models/rtc.js b/addons/mail/static/src/models/rtc.js index 2bfdb62abe8..6c12a97ed9a 100644 --- a/addons/mail/static/src/models/rtc.js +++ b/addons/mail/static/src/models/rtc.js @@ -6,6 +6,7 @@ import { registerModel } from '@mail/model/model_core'; import { attr, many, one } from '@mail/model/model_field'; import { clear, insert, insertAndReplace, replace, unlink } from '@mail/model/model_field_command'; import { monitorAudio } from '@mail/utils/media_monitoring'; +import { sprintf } from '@web/core/utils/strings'; /** * The order in which transceivers are added, relevant for RTCPeerConnection.getTransceivers which returns @@ -243,7 +244,7 @@ registerModel({ audioTrack = audioStream.getAudioTracks()[0]; } catch (_e) { this.env.services.notification.notify({ - message: _.str.sprintf( + message: sprintf( this.env._t(`"%s" requires microphone access`), window.location.host, ), @@ -1001,7 +1002,7 @@ registerModel({ } } catch (_e) { this.env.services.notification.notify({ - message: _.str.sprintf( + message: sprintf( this.env._t(`"%s" requires "%s" access`), window.location.host, type === 'user-video' ? 'camera' : 'display', diff --git a/addons/mail/static/src/models/thread.js b/addons/mail/static/src/models/thread.js index f72f79972e4..fe2f3a7aac7 100644 --- a/addons/mail/static/src/models/thread.js +++ b/addons/mail/static/src/models/thread.js @@ -9,6 +9,7 @@ import Timer from '@mail/utils/timer'; import { cleanSearchTerm } from '@mail/utils/utils'; import * as mailUtils from '@mail/js/utils'; +import { sprintf } from '@web/core/utils/strings'; import { str_to_datetime } from 'web.time'; const getSuggestedRecipientInfoNextTemporaryId = (function () { @@ -1636,19 +1637,19 @@ registerModel({ return this.constructor.fields.typingStatusText.default; } if (this.orderedOtherTypingMembers.length === 1) { - return _.str.sprintf( + return sprintf( this.env._t("%s is typing..."), this.getMemberName(this.orderedOtherTypingMembers[0]) ); } if (this.orderedOtherTypingMembers.length === 2) { - return _.str.sprintf( + return sprintf( this.env._t("%s and %s are typing..."), this.getMemberName(this.orderedOtherTypingMembers[0]), this.getMemberName(this.orderedOtherTypingMembers[1]) ); } - return _.str.sprintf( + return sprintf( this.env._t("%s, %s and more are typing..."), this.getMemberName(this.orderedOtherTypingMembers[0]), this.getMemberName(this.orderedOtherTypingMembers[1])