/** * Logout the current user. * * @param activity the caller activity */ public static void logout(Activity activity) { stopEventStream(activity); try { ShortcutBadger.setBadge(activity, 0); } catch (Exception e) { } // warn that the user logs out Collection<MXSession> sessions = Matrix.getMXSessions(activity); for (MXSession session : sessions) { // Publish to the server that we're now offline MyPresenceManager.getInstance(activity, session).advertiseOffline(); MyPresenceManager.remove(session); } // clear the preferences PreferenceManager.getDefaultSharedPreferences(activity).edit().clear().commit(); // clear credentials Matrix.getInstance(activity).clearSessions(activity, true); // reset the GCM Matrix.getInstance(activity).getSharedGcmRegistrationManager().reset(); // reset the contacts PIDsRetriever.getIntance().reset(); ContactsManager.reset(); MXMediasCache.clearThumbnailsCache(activity); // go to login page activity.startActivity(new Intent(activity, LoginActivity.class)); activity.finish(); }
public static void startEventStreamService(Context context) { // the events stream service is launched // either the application has never be launched // or the service has been killed on low memory if (EventStreamService.getInstance() == null) { ArrayList<String> matrixIds = new ArrayList<String>(); Collection<MXSession> sessions = Matrix.getInstance(context.getApplicationContext()).getSessions(); if ((null != sessions) && (sessions.size() > 0)) { Log.d(LOG_TAG, "restart EventStreamService"); for (MXSession session : sessions) { Boolean isSessionReady = session.getDataHandler().getStore().isReady(); if (!isSessionReady) { session.getDataHandler().getStore().open(); } // session to activate matrixIds.add(session.getCredentials().userId); } Intent intent = new Intent(context, EventStreamService.class); intent.putExtra( EventStreamService.EXTRA_MATRIX_IDS, matrixIds.toArray(new String[matrixIds.size()])); intent.putExtra( EventStreamService.EXTRA_STREAM_ACTION, EventStreamService.StreamAction.START.ordinal()); context.startService(intent); } } }
/** refresh the profile thumbnail */ private void refreshProfileThumbnail() { mThumbnailImageView.setImageResource(R.drawable.ic_contact_picture_holo_light); if (mMember.avatarUrl != null) { int size = getResources().getDimensionPixelSize(R.dimen.profile_avatar_size); Matrix.getInstance(this) .getMediasCache() .loadAvatarThumbnail( mSession.getHomeserverConfig(), mThumbnailImageView, mMember.avatarUrl, size); } }
public static void logout(Activity activity, MXSession session, Boolean clearCredentials) { if (session.isActive()) { // stop the service EventStreamService eventStreamService = EventStreamService.getInstance(); ArrayList<String> matrixIds = new ArrayList<String>(); matrixIds.add(session.getMyUser().userId); eventStreamService.stopAccounts(matrixIds); // Publish to the server that we're now offline MyPresenceManager.getInstance(activity, session).advertiseOffline(); MyPresenceManager.remove(session); // unregister from the GCM. Matrix.getInstance(activity) .getSharedGcmRegistrationManager() .unregisterSession(session, null); // clear credentials Matrix.getInstance(activity).clearSession(activity, session, clearCredentials); } }
public static void goToOneToOneRoom( final MXSession aSession, final String otherUserId, final Activity fromActivity, final ApiCallback<Void> callback) { // sanity check if (null == otherUserId) { return; } // check first if the 1:1 room already exists MXSession session = (aSession == null) ? Matrix.getMXSession(fromActivity, null) : aSession; // no session is provided if (null == session) { // get the default one. session = Matrix.getInstance(fromActivity.getApplicationContext()).getDefaultSession(); } // sanity check if ((null == session) || !session.isActive()) { return; } final MXSession fSession = session; // so, list the existing room, and search the 2 users room with this other users String roomId = null; Collection<Room> rooms = session.getDataHandler().getStore().getRooms(); for (Room room : rooms) { Collection<RoomMember> members = room.getMembers(); if (members.size() == 2) { for (RoomMember member : members) { if (member.getUserId().equals(otherUserId)) { roomId = room.getRoomId(); break; } } } } // the room already exists -> switch to it if (null != roomId) { CommonActivityUtils.goToRoomPage(session, roomId, fromActivity, null); // everything is ok if (null != callback) { callback.onSuccess(null); } } else { session.createRoom( null, null, RoomState.VISIBILITY_PRIVATE, null, new SimpleApiCallback<String>(fromActivity) { @Override public void onSuccess(String roomId) { final Room room = fSession.getDataHandler().getRoom(roomId); room.invite( otherUserId, new SimpleApiCallback<Void>(this) { @Override public void onSuccess(Void info) { CommonActivityUtils.goToRoomPage( fSession, room.getRoomId(), fromActivity, null); callback.onSuccess(null); } @Override public void onMatrixError(MatrixError e) { if (null != callback) { callback.onMatrixError(e); } } @Override public void onNetworkError(Exception e) { if (null != callback) { callback.onNetworkError(e); } } @Override public void onUnexpectedError(Exception e) { if (null != callback) { callback.onUnexpectedError(e); } } }); } @Override public void onMatrixError(MatrixError e) { if (null != callback) { callback.onMatrixError(e); } } @Override public void onNetworkError(Exception e) { if (null != callback) { callback.onNetworkError(e); } } @Override public void onUnexpectedError(Exception e) { if (null != callback) { callback.onUnexpectedError(e); } } }); } }
public static void disconnect(Activity activity) { stopEventStream(activity); activity.finish(); Matrix.getInstance(activity).mHasBeenDisconnected = true; }
/** * Return the used medias cache. This method can be overridden to use another medias cache * * @return the used medias cache */ public MXMediasCache getMXMediasCache() { return Matrix.getInstance(getActivity()).getMediasCache(); }