Search in sources :

Example 1 with RoomAccountData

use of org.matrix.androidsdk.data.RoomAccountData 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;
}
Also used : RoomAccountData(org.matrix.androidsdk.data.RoomAccountData) File(java.io.File) Room(org.matrix.androidsdk.data.Room)

Example 2 with RoomAccountData

use of org.matrix.androidsdk.data.RoomAccountData in project matrix-android-sdk by matrix-org.

the class MXFileStore method saveRoomsAccountData.

/**
 * Flush the pending account data.
 */
private void saveRoomsAccountData() {
    if ((mRoomsToCommitForAccountData.size() > 0) && (null != mFileStoreHandler)) {
        // get the list
        final HashSet<String> fRoomsToCommitForAccountData = mRoomsToCommitForAccountData;
        mRoomsToCommitForAccountData = new HashSet<>();
        Runnable r = new Runnable() {

            @Override
            public void run() {
                mFileStoreHandler.post(new Runnable() {

                    public void run() {
                        if (!isKilled()) {
                            long start = System.currentTimeMillis();
                            for (String roomId : fRoomsToCommitForAccountData) {
                                RoomAccountData accountData = mRoomAccountData.get(roomId);
                                if (null != accountData) {
                                    writeObject("saveRoomsAccountData " + roomId, new File(mStoreRoomsAccountDataFolderFile, roomId), accountData);
                                } else {
                                    deleteRoomAccountDataFile(roomId);
                                }
                            }
                            Log.d(LOG_TAG, "saveSummaries : " + fRoomsToCommitForAccountData.size() + " account data in " + (System.currentTimeMillis() - start) + " ms");
                        }
                    }
                });
            }
        };
        Thread t = new Thread(r);
        t.start();
    }
}
Also used : RoomAccountData(org.matrix.androidsdk.data.RoomAccountData) File(java.io.File) HandlerThread(android.os.HandlerThread)

Aggregations

File (java.io.File)2 RoomAccountData (org.matrix.androidsdk.data.RoomAccountData)2 HandlerThread (android.os.HandlerThread)1 Room (org.matrix.androidsdk.data.Room)1