[RN] Fix legacy recent-list storage
This commit is contained in:
parent
6e05cab46e
commit
83243d5980
|
@ -1,6 +0,0 @@
|
|||
/**
|
||||
* The max size of the list.
|
||||
*
|
||||
* @type {number}
|
||||
*/
|
||||
export const LIST_SIZE = 30;
|
|
@ -31,42 +31,11 @@ require('moment/locale/zh-cn');
|
|||
import { i18next } from '../base/i18n';
|
||||
import { parseURIString } from '../base/util';
|
||||
|
||||
const logger = require('jitsi-meet-logger').getLogger(__filename);
|
||||
|
||||
/**
|
||||
* The name of the {@code window.localStorage} item where recent rooms are
|
||||
* stored.
|
||||
*
|
||||
* @type {string}
|
||||
*/
|
||||
const RECENT_URL_STORAGE = 'recentURLs';
|
||||
|
||||
/**
|
||||
* Retrieves the recent room list that was stored using the legacy way.
|
||||
*
|
||||
* @returns {Array<Object>}
|
||||
*/
|
||||
export function getLegacyRecentRoomList(): Array<Object> {
|
||||
const legacyListString = window.localStorage.getItem(RECENT_URL_STORAGE);
|
||||
|
||||
try {
|
||||
const legacyList = JSON.parse(legacyListString);
|
||||
|
||||
if (legacyList && legacyList.length) {
|
||||
return legacyList;
|
||||
}
|
||||
} catch (error) {
|
||||
logger.warn('Unable to parse legacy recent list');
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the recent room list and generates all the data needed to be
|
||||
* displayed.
|
||||
*
|
||||
* @param {Array<Object>} list - The stored recent list retrieved from Redux.
|
||||
* @param {Array<Object>} list - The stored recent list retrieved from redux.
|
||||
* @returns {Array}
|
||||
*/
|
||||
export function getRecentRooms(list: Array<Object>): Array<Object> {
|
||||
|
|
|
@ -6,11 +6,26 @@ import {
|
|||
STORE_CURRENT_CONFERENCE,
|
||||
UPDATE_CONFERENCE_DURATION
|
||||
} from './actionTypes';
|
||||
import { LIST_SIZE } from './constants';
|
||||
import { getLegacyRecentRoomList } from './functions';
|
||||
|
||||
const logger = require('jitsi-meet-logger').getLogger(__filename);
|
||||
|
||||
/**
|
||||
* The Redux subtree of this feature.
|
||||
* The name of the {@code window.localStorage} item where recent rooms are
|
||||
* stored.
|
||||
*
|
||||
* @type {string}
|
||||
*/
|
||||
const LEGACY_STORAGE_KEY = 'recentURLs';
|
||||
|
||||
/**
|
||||
* The max size of the list.
|
||||
*
|
||||
* @type {number}
|
||||
*/
|
||||
export const MAX_LIST_SIZE = 30;
|
||||
|
||||
/**
|
||||
* The redux subtree of this feature.
|
||||
*/
|
||||
const STORE_NAME = 'features/recent-list';
|
||||
|
||||
|
@ -22,22 +37,42 @@ PersistencyRegistry.register(STORE_NAME, {
|
|||
});
|
||||
|
||||
/**
|
||||
* Reduces the Redux actions of the feature features/recent-list.
|
||||
* Reduces the redux actions of the feature features/recent-list.
|
||||
*/
|
||||
ReducerRegistry.register(STORE_NAME, (state = {
|
||||
list: getLegacyRecentRoomList()
|
||||
}, action) => {
|
||||
switch (action.type) {
|
||||
case STORE_CURRENT_CONFERENCE:
|
||||
return _storeCurrentConference(state, action);
|
||||
ReducerRegistry.register(
|
||||
STORE_NAME,
|
||||
(state = { list: _getLegacyRecentRoomList() }, action) => {
|
||||
switch (action.type) {
|
||||
case STORE_CURRENT_CONFERENCE:
|
||||
return _storeCurrentConference(state, action);
|
||||
|
||||
case UPDATE_CONFERENCE_DURATION:
|
||||
return _updateConferenceDuration(state, action);
|
||||
case UPDATE_CONFERENCE_DURATION:
|
||||
return _updateConferenceDuration(state, action);
|
||||
|
||||
default:
|
||||
return state;
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Retrieves the recent room list that was stored using the legacy way.
|
||||
*
|
||||
* @returns {Array<Object>}
|
||||
*/
|
||||
export function _getLegacyRecentRoomList(): Array<Object> {
|
||||
try {
|
||||
const list
|
||||
= JSON.parse(window.localStorage.getItem(LEGACY_STORAGE_KEY));
|
||||
|
||||
if (list && list.length) {
|
||||
return list;
|
||||
}
|
||||
} catch (error) {
|
||||
logger.warn('Failed to parse legacy recent-room list!');
|
||||
}
|
||||
});
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a new list entry to the redux store.
|
||||
|
@ -54,15 +89,15 @@ function _storeCurrentConference(state, action) {
|
|||
// it to the top.
|
||||
const list = state.list.filter(e => e.conference !== conference);
|
||||
|
||||
// This is a reverse sorted array (i.e. newer elements at the end).
|
||||
// The list is a reverse-sorted (i.e. the newer elements are at the end).
|
||||
list.push({
|
||||
conference,
|
||||
conferenceDuration: 0, // we don't have this data yet
|
||||
conferenceDuration: 0, // We don't have this data yet!
|
||||
date: Date.now()
|
||||
});
|
||||
|
||||
// maximising the size
|
||||
list.splice(0, list.length - LIST_SIZE);
|
||||
// Ensure the list doesn't exceed a/the maximum size.
|
||||
list.splice(0, list.length - MAX_LIST_SIZE);
|
||||
|
||||
return {
|
||||
list
|
||||
|
|
Loading…
Reference in New Issue