Moved assignRoomAliases into a central piece: matrixService for now

paul/schema_breaking_changes
Emmanuel ROHEE 2014-08-27 15:07:51 +02:00
parent 43242a0657
commit c67cac134f
1 changed files with 34 additions and 0 deletions

View File

@ -415,6 +415,40 @@ angular.module('matrixService', [])
config.version = configVersion;
localStorage.setItem("config", JSON.stringify(config));
},
/****** Room aliases management ******/
/**
* Enhance data returned by rooms() and publicRooms() by adding room_alias
* & room_display_name which are computed from data already retrieved from the server.
* @param {Array} data the response of rooms() and publicRooms()
* @returns {Array} the same array with enriched objects
*/
assignRoomAliases: function(data) {
for (var i=0; i<data.length; i++) {
var alias = this.getRoomIdToAliasMapping(data[i].room_id);
if (alias) {
// use the existing alias from storage
data[i].room_alias = alias;
data[i].room_display_name = alias;
}
else if (data[i].aliases && data[i].aliases[0]) {
// save the mapping
// TODO: select the smarter alias from the array
this.createRoomIdToAliasMapping(data[i].room_id, data[i].aliases[0]);
data[i].room_display_name = data[i].aliases[0];
}
else if (data[i].membership == "invite" && "inviter" in data[i]) {
data[i].room_display_name = data[i].inviter + "'s room"
}
else {
// last resort use the room id
data[i].room_display_name = data[i].room_id;
}
}
return data;
},
createRoomIdToAliasMapping: function(roomId, alias) {
localStorage.setItem(MAPPING_PREFIX+roomId, alias);