put current locale in consideration for various caches in filters/services
some local caches now need to be purged when the locale is changed on runtime or else they'll still display strings in the wrong locale/language Revert this commit once the locale loading is moved into init phase of the page so it won't change during runtime anymore
This commit is contained in:
parent
2e148b29a7
commit
37bb69a409
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
/* Filters */
|
/* Filters */
|
||||||
|
|
||||||
angular.module('myApp.filters', [])
|
angular.module('myApp.filters', ['myApp.i18n'])
|
||||||
|
|
||||||
.filter('userName', [function() {
|
.filter('userName', [function() {
|
||||||
return function (user) {
|
return function (user) {
|
||||||
@ -51,14 +51,17 @@ angular.module('myApp.filters', [])
|
|||||||
}
|
}
|
||||||
}])
|
}])
|
||||||
|
|
||||||
.filter('dateOrTime', ['$filter', function($filter) {
|
.filter('dateOrTime', ['$filter', '_', function($filter, _) {
|
||||||
var cachedDates = {},
|
var cachedDates = {},
|
||||||
dateFilter = $filter('date');
|
dateFilter = $filter('date');
|
||||||
|
|
||||||
return function (timestamp) {
|
return function (timestamp) {
|
||||||
|
if (!cachedDates.hasOwnProperty(_.locale())) {
|
||||||
|
cachedDates[_.locale()] = {};
|
||||||
|
}
|
||||||
|
|
||||||
if (cachedDates[timestamp]) {
|
if (cachedDates[_.locale()][timestamp]) {
|
||||||
return cachedDates[timestamp];
|
return cachedDates[_.locale()][timestamp];
|
||||||
}
|
}
|
||||||
|
|
||||||
var ticks = timestamp * 1000,
|
var ticks = timestamp * 1000,
|
||||||
@ -71,34 +74,42 @@ angular.module('myApp.filters', [])
|
|||||||
else if (diff > 43200000) { // 12 hours
|
else if (diff > 43200000) { // 12 hours
|
||||||
format = 'EEE';
|
format = 'EEE';
|
||||||
}
|
}
|
||||||
return cachedDates[timestamp] = dateFilter(ticks, format);
|
return cachedDates[_.locale()][timestamp] = dateFilter(ticks, format);
|
||||||
}
|
}
|
||||||
}])
|
}])
|
||||||
|
|
||||||
.filter('time', ['$filter', function($filter) {
|
.filter('time', ['$filter', '_', function($filter, _) {
|
||||||
var cachedDates = {},
|
var cachedDates = {},
|
||||||
dateFilter = $filter('date'),
|
dateFilter = $filter('date'),
|
||||||
format = Config.Navigator.mobile ? 'HH:mm' : 'HH:mm:ss';
|
format = Config.Navigator.mobile ? 'HH:mm' : 'HH:mm:ss';
|
||||||
|
|
||||||
return function (timestamp) {
|
return function (timestamp) {
|
||||||
if (cachedDates[timestamp]) {
|
if (!cachedDates.hasOwnProperty(_.locale())) {
|
||||||
return cachedDates[timestamp];
|
cachedDates[_.locale()] = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
return cachedDates[timestamp] = dateFilter(timestamp * 1000, format);
|
if (cachedDates[_.locale()][timestamp]) {
|
||||||
|
return cachedDates[_.locale()][timestamp];
|
||||||
|
}
|
||||||
|
|
||||||
|
return cachedDates[_.locale()][timestamp] = dateFilter(timestamp * 1000, format);
|
||||||
}
|
}
|
||||||
}])
|
}])
|
||||||
|
|
||||||
.filter('myDate', ['$filter', function($filter) {
|
.filter('myDate', ['$filter', '_', function($filter, _) {
|
||||||
var cachedDates = {},
|
var cachedDates = {},
|
||||||
dateFilter = $filter('date');
|
dateFilter = $filter('date');
|
||||||
|
|
||||||
return function (timestamp) {
|
return function (timestamp) {
|
||||||
if (cachedDates[timestamp]) {
|
if (!cachedDates.hasOwnProperty(_.locale())) {
|
||||||
return cachedDates[timestamp];
|
cachedDates[_.locale()] = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
return cachedDates[timestamp] = dateFilter(timestamp * 1000, 'fullDate');
|
if (cachedDates[_.locale()][timestamp]) {
|
||||||
|
return cachedDates[_.locale()][timestamp];
|
||||||
|
}
|
||||||
|
|
||||||
|
return cachedDates[_.locale()][timestamp] = dateFilter(timestamp * 1000, 'fullDate');
|
||||||
}
|
}
|
||||||
}])
|
}])
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
/* Services */
|
/* Services */
|
||||||
|
|
||||||
angular.module('myApp.services', [])
|
angular.module('myApp.services', ['myApp.i18n'])
|
||||||
|
|
||||||
.service('AppUsersManager', function ($rootScope, $modal, $modalStack, $filter, $q, MtpApiFileManager, MtpApiManager, RichTextProcessor, SearchIndexManager, ErrorService, Storage) {
|
.service('AppUsersManager', function ($rootScope, $modal, $modalStack, $filter, $q, MtpApiFileManager, MtpApiManager, RichTextProcessor, SearchIndexManager, ErrorService, Storage) {
|
||||||
var users = {},
|
var users = {},
|
||||||
@ -729,11 +729,11 @@ angular.module('myApp.services', [])
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
.service('AppMessagesManager', function ($q, $rootScope, $location, $filter, ApiUpdatesManager, AppUsersManager, AppChatsManager, AppPeersManager, AppPhotosManager, AppVideoManager, AppDocsManager, AppAudioManager, MtpApiManager, MtpApiFileManager, RichTextProcessor, NotificationsManager, SearchIndexManager, PeersSelectService,Storage) {
|
.service('AppMessagesManager', function ($q, $rootScope, $location, $filter, ApiUpdatesManager, AppUsersManager, AppChatsManager, AppPeersManager, AppPhotosManager, AppVideoManager, AppDocsManager, AppAudioManager, MtpApiManager, MtpApiFileManager, RichTextProcessor, NotificationsManager, SearchIndexManager, PeersSelectService,Storage, _) {
|
||||||
|
|
||||||
var messagesStorage = {};
|
var messagesStorage = {};
|
||||||
var messagesForHistory = {};
|
var messagesForHistory = {};
|
||||||
var messagesForDialogs = {};
|
var messagesForDialogs = {locale: _.locale()};
|
||||||
var historiesStorage = {};
|
var historiesStorage = {};
|
||||||
var dialogsStorage = {count: null, dialogs: []};
|
var dialogsStorage = {count: null, dialogs: []};
|
||||||
var pendingByRandomID = {};
|
var pendingByRandomID = {};
|
||||||
@ -1748,6 +1748,10 @@ angular.module('myApp.services', [])
|
|||||||
function wrapForDialog (msgID, unreadCount) {
|
function wrapForDialog (msgID, unreadCount) {
|
||||||
var useCache = unreadCount != -1;
|
var useCache = unreadCount != -1;
|
||||||
|
|
||||||
|
if (messagesForDialogs.locale != _.locale()) {
|
||||||
|
messagesForDialogs = {locale: _.locale()};
|
||||||
|
}
|
||||||
|
|
||||||
if (useCache && messagesForDialogs[msgID] !== undefined) {
|
if (useCache && messagesForDialogs[msgID] !== undefined) {
|
||||||
return messagesForDialogs[msgID];
|
return messagesForDialogs[msgID];
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user