use of org.matrix.androidsdk.data.Room in project matrix-android-sdk by matrix-org.
the class MatrixMessageListFragment method onSearchResponse.
/**
* Manage the search response.
*
* @param searchResponse the search response
* @param onSearchResultListener the search result listener
*/
protected void onSearchResponse(final SearchResponse searchResponse, final OnSearchResultListener onSearchResultListener) {
List<SearchResult> searchResults = searchResponse.searchCategories.roomEvents.results;
ArrayList<MessageRow> messageRows = new ArrayList<>(searchResults.size());
for (SearchResult searchResult : searchResults) {
RoomState roomState = null;
if (null != mRoom) {
roomState = mRoom.getState();
}
if (null == roomState) {
Room room = mSession.getDataHandler().getStore().getRoom(searchResult.result.roomId);
if (null != room) {
roomState = room.getState();
}
}
boolean isValidMessage = false;
if ((null != searchResult.result) && (null != searchResult.result.getContent())) {
JsonObject object = searchResult.result.getContentAsJsonObject();
if (null != object) {
isValidMessage = (0 != object.entrySet().size());
}
}
if (isValidMessage) {
messageRows.add(new MessageRow(searchResult.result, roomState));
}
}
Collections.reverse(messageRows);
mAdapter.clear();
mAdapter.addAll(messageRows);
mNextBatch = searchResponse.searchCategories.roomEvents.nextBatch;
if (null != onSearchResultListener) {
try {
onSearchResultListener.onSearchSucceed(messageRows.size());
} catch (Exception e) {
Log.e(LOG_TAG, "onSearchResponse failed with " + e.getMessage());
}
}
}
use of org.matrix.androidsdk.data.Room in project matrix-android-sdk by matrix-org.
the class MXFileStore method loadSummary.
/**
* Load the room summary from the files system.
*
* @param roomId the room id.
* @return true if the operation succeeds;
*/
private boolean loadSummary(final String roomId) {
boolean succeed = true;
// do not check if the room exists here.
// if the user is invited to a room, the room object is not created until it is joined.
RoomSummary summary = null;
try {
File messagesListFile = new File(mStoreRoomsSummaryFolderFile, roomId);
Object summaryAsVoid = readObject("loadSummary " + roomId, messagesListFile);
if (null == summaryAsVoid) {
Log.e(LOG_TAG, "loadSummary failed");
return false;
}
summary = (RoomSummary) summaryAsVoid;
} catch (Exception e) {
succeed = false;
Log.e(LOG_TAG, "loadSummary failed : " + e.getMessage());
}
if (null != summary) {
// summary.getLatestReceivedEvent().finalizeDeserialization();
Room room = getRoom(summary.getRoomId());
// it is restored from the room
if (null != room) {
summary.setLatestRoomState(room.getState());
}
mRoomSummaries.put(roomId, summary);
}
return succeed;
}
use of org.matrix.androidsdk.data.Room in project matrix-android-sdk by matrix-org.
the class MXFileStore method loadRoomAccountData.
/**
* Load the account Data of a dedicated room.
* @param roomId the room Id
* @return true if the operation succeeds.
*/
private boolean loadRoomAccountData(final String roomId) {
boolean succeeded = true;
RoomAccountData roomAccountData = null;
try {
File accountDataFile = new File(mStoreRoomsAccountDataFolderFile, roomId);
if (accountDataFile.exists()) {
Object accountAsVoid = readObject("loadRoomAccountData " + roomId, accountDataFile);
if (null == accountAsVoid) {
Log.e(LOG_TAG, "loadRoomAccountData failed");
return false;
}
roomAccountData = (RoomAccountData) accountAsVoid;
}
} catch (Exception e) {
succeeded = false;
Log.e(LOG_TAG, "loadRoomAccountData failed : " + e.toString());
}
// succeeds to extract the message list
if (null != roomAccountData) {
Room room = getRoom(roomId);
if (null != room) {
room.setAccountData(roomAccountData);
}
}
return succeeded;
}
use of org.matrix.androidsdk.data.Room in project matrix-android-sdk by matrix-org.
the class MXDataHandler method roomIdByAlias.
/**
* Retrieve a room Id by its alias.
*
* @param roomAlias the room alias
* @param callback the asynchronous callback
*/
public void roomIdByAlias(final String roomAlias, final ApiCallback<String> callback) {
String roomId = null;
Collection<Room> rooms = getStore().getRooms();
for (Room room : rooms) {
if (TextUtils.equals(room.getState().alias, roomAlias)) {
roomId = room.getRoomId();
break;
} else {
// getAliases cannot be null
List<String> aliases = room.getState().getAliases();
for (String alias : aliases) {
if (TextUtils.equals(alias, roomAlias)) {
roomId = room.getRoomId();
break;
}
}
// find one matched room id.
if (null != roomId) {
break;
}
}
}
if (null != roomId) {
final String fRoomId = roomId;
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override
public void run() {
callback.onSuccess(fRoomId);
}
});
} else {
mRoomsRestClient.getRoomIdByAlias(roomAlias, new ApiCallback<RoomAliasDescription>() {
@Override
public void onSuccess(RoomAliasDescription info) {
callback.onSuccess(info.room_id);
}
@Override
public void onNetworkError(Exception e) {
callback.onNetworkError(e);
}
@Override
public void onMatrixError(MatrixError e) {
callback.onMatrixError(e);
}
@Override
public void onUnexpectedError(Exception e) {
callback.onUnexpectedError(e);
}
});
}
}
use of org.matrix.androidsdk.data.Room in project matrix-android-sdk by matrix-org.
the class MXDataHandler method getDirectChatRoomIdsListRetroCompat.
/**
* Return the direct chat room list for retro compatibility with 1:1 rooms.
*
* @param aStore store instance
* @param aDirectChatRoomIdsListRetValue the other participants in the 1:1 room
*/
private void getDirectChatRoomIdsListRetroCompat(IMXStore aStore, ArrayList<RoomIdsListRetroCompat> aDirectChatRoomIdsListRetValue) {
RoomIdsListRetroCompat item;
if ((null != aStore) && (null != aDirectChatRoomIdsListRetValue)) {
ArrayList<Room> rooms = new ArrayList<>(aStore.getRooms());
ArrayList<RoomMember> members;
int otherParticipantIndex;
for (Room r : rooms) {
// been moved to a different tag section
if ((r.getActiveMembers().size() == 2) && (null != r.getAccountData()) && (!r.getAccountData().hasTags())) {
RoomMember roomMember = r.getMember(getMyUser().user_id);
members = new ArrayList<>(r.getActiveMembers());
if (null != roomMember) {
String membership = roomMember.membership;
if (TextUtils.equals(membership, RoomMember.MEMBERSHIP_JOIN) || TextUtils.equals(membership, RoomMember.MEMBERSHIP_BAN) || TextUtils.equals(membership, RoomMember.MEMBERSHIP_LEAVE)) {
if (TextUtils.equals(members.get(0).getUserId(), getMyUser().user_id)) {
otherParticipantIndex = 1;
} else {
otherParticipantIndex = 0;
}
item = new RoomIdsListRetroCompat(members.get(otherParticipantIndex).getUserId(), r.getRoomId());
aDirectChatRoomIdsListRetValue.add(item);
}
}
}
}
}
}
Aggregations