use of org.matrix.androidsdk.data.Room in project matrix-android-sdk by matrix-org.
the class MXCrypto method getE2eRoomMembers.
/**
* get the users we share an e2e-enabled room with
*
* @return {Object<string>} userid->userid map (should be a Set but argh ES6)
*/
private List<String> getE2eRoomMembers() {
HashSet<String> list = new HashSet<>();
List<Room> rooms = getE2eRooms();
for (Room r : rooms) {
Collection<RoomMember> activeMembers = r.getActiveMembers();
for (RoomMember m : activeMembers) {
// add only the matrix id
if (MXSession.PATTERN_CONTAIN_MATRIX_USER_IDENTIFIER.matcher(m.getUserId()).matches()) {
list.add(m.getUserId());
}
}
}
return new ArrayList<>(list);
}
use of org.matrix.androidsdk.data.Room in project matrix-android-sdk by matrix-org.
the class MXCrypto method setGlobalBlacklistUnverifiedDevices.
/**
* Set the global override for whether the client should ever send encrypted
* messages to unverified devices.
* If false, it can still be overridden per-room.
* If true, it overrides the per-room settings.
*
* @param block true to unilaterally blacklist all
* @param callback the asynchronous callback.
*/
public void setGlobalBlacklistUnverifiedDevices(final boolean block, final ApiCallback<Void> callback) {
final String userId = mSession.getMyUserId();
final ArrayList<String> userRoomIds = new ArrayList<>();
Collection<Room> rooms = mSession.getDataHandler().getStore().getRooms();
for (Room room : rooms) {
if (room.isEncrypted()) {
RoomMember roomMember = room.getMember(userId);
// test if the user joins the room
if ((null != roomMember) && TextUtils.equals(roomMember.membership, RoomMember.MEMBERSHIP_JOIN)) {
userRoomIds.add(room.getRoomId());
}
}
}
getEncryptingThreadHandler().post(new Runnable() {
@Override
public void run() {
mCryptoStore.setGlobalBlacklistUnverifiedDevices(block);
getUIHandler().post(new Runnable() {
@Override
public void run() {
if (null != callback) {
callback.onSuccess(null);
}
}
});
}
});
}
use of org.matrix.androidsdk.data.Room in project matrix-android-sdk by matrix-org.
the class MXCrypto method setRoomBlacklistUnverifiedDevices.
/**
* Manages the room black-listing for unverified devices.
*
* @param roomId the room id
* @param add true to add the room id to the list, false to remove it.
* @param callback the asynchronous callback
*/
private void setRoomBlacklistUnverifiedDevices(final String roomId, final boolean add, final ApiCallback<Void> callback) {
final Room room = mSession.getDataHandler().getRoom(roomId);
// sanity check
if (null == room) {
getUIHandler().post(new Runnable() {
@Override
public void run() {
callback.onSuccess(null);
}
});
return;
}
getEncryptingThreadHandler().post(new Runnable() {
@Override
public void run() {
List<String> roomIds = mCryptoStore.getRoomsListBlacklistUnverifiedDevices();
if (add) {
if (!roomIds.contains(roomId)) {
roomIds.add(roomId);
}
} else {
roomIds.remove(roomId);
}
mCryptoStore.setRoomsListBlacklistUnverifiedDevices(roomIds);
getUIHandler().post(new Runnable() {
@Override
public void run() {
if (null != callback) {
callback.onSuccess(null);
}
}
});
}
});
}
use of org.matrix.androidsdk.data.Room in project matrix-android-sdk by matrix-org.
the class MatrixMessageListFragment method onResume.
@Override
public void onResume() {
super.onResume();
Activity activity = getActivity();
if (activity instanceof IEventSendingListener) {
mEventSendingListener = (IEventSendingListener) activity;
}
if (activity instanceof IOnScrollListener) {
mActivityOnScrollListener = (IOnScrollListener) activity;
}
// sanity check
if ((null != mRoom) && mEventTimeLine.isLiveTimeline()) {
Room room = mSession.getDataHandler().getRoom(mRoom.getRoomId(), false);
if (null != room) {
room.addEventListener(mEventsListener);
} else {
Log.e(LOG_TAG, "the room " + mRoom.getRoomId() + " does not exist anymore");
}
}
// a room history filling was suspended because the fragment was not active
if (mFillHistoryOnResume) {
mFillHistoryOnResume = false;
backPaginate(true);
}
}
use of org.matrix.androidsdk.data.Room in project matrix-android-sdk by matrix-org.
the class MXFileStore method loadRoomToken.
/**
* Load the room token from the file system.
*
* @param roomId the room id.
* @return true if it succeeds.
*/
private boolean loadRoomToken(final String roomId) {
boolean succeed = true;
Room room = getRoom(roomId);
// should always be true
if (null != room) {
String token = null;
try {
File messagesListFile = new File(mStoreRoomsTokensFolderFile, roomId);
Object tokenAsVoid = readObject("loadRoomToken " + roomId, messagesListFile);
if (null == tokenAsVoid) {
succeed = false;
} else {
token = (String) tokenAsVoid;
// check if the oldest event has a token.
LinkedHashMap<String, Event> eventsHash = mRoomEvents.get(roomId);
if ((null != eventsHash) && (eventsHash.size() > 0)) {
Event event = eventsHash.values().iterator().next();
// so, if the oldest messages has a token, use it instead of the stored token.
if (null != event.mToken) {
token = event.mToken;
}
}
}
} catch (Exception e) {
succeed = false;
Log.e(LOG_TAG, "loadRoomToken failed : " + e.toString());
}
if (null != token) {
mRoomTokens.put(roomId, token);
} else {
deleteRoom(roomId);
}
} else {
try {
File messagesListFile = new File(mStoreRoomsTokensFolderFile, roomId);
messagesListFile.delete();
} catch (Exception e) {
Log.e(LOG_TAG, "loadRoomToken failed with error " + e.getMessage());
}
}
return succeed;
}
Aggregations