remove opengroupmanager singlteon

This commit is contained in:
Audric Ackermann 2021-06-24 15:35:42 +10:00
parent e090b8e8c6
commit 802bd169d7
No known key found for this signature in database
GPG key ID: 999F434D76324AD4
4 changed files with 21 additions and 55 deletions

View file

@ -32,48 +32,18 @@ import { useInterval } from '../../hooks/useInterval';
import { clearSearch } from '../../state/ducks/search';
import { showLeftPaneSection } from '../../state/ducks/section';
import {
cleanUpOldDecryptedMedias,
getDecryptedMediaUrl,
} from '../../session/crypto/DecryptedAttachmentsManager';
import { OpenGroupManagerV2 } from '../../opengroup/opengroupV2/OpenGroupManagerV2';
import { loadDefaultRooms } from '../../opengroup/opengroupV2/ApiUtil';
import { cleanUpOldDecryptedMedias } from '../../session/crypto/DecryptedAttachmentsManager';
import { getOpenGroupManager } from '../../opengroup/opengroupV2/OpenGroupManagerV2';
import { forceRefreshRandomSnodePool } from '../../session/snode_api/snodePool';
import { getSwarmPollingInstance } from '../../session/snode_api';
import { IMAGE_JPEG } from '../../types/MIME';
import { FSv2 } from '../../fileserver';
import { debounce } from 'lodash';
import { DURATION } from '../../session/constants';
import { actions as conversationActions } from '../../state/ducks/conversations';
import { ActionPanelOnionStatusLight, OnionPathModal } from '../OnionStatusPathDialog';
import { EditProfileDialog } from '../EditProfileDialog';
import { SessionConfirm } from './SessionConfirm';
import {
getAddModeratorsModal,
getAdminLeaveClosedGroupDialog,
getChangeNickNameDialog,
getConfirmModal,
getEditProfileDialog,
getInviteContactModal,
getOnionPathDialog,
getRecoveryPhraseDialog,
getRemoveModeratorsModal,
getUpdateGroupMembersModal,
getUpdateGroupNameModal,
getUserDetailsModal,
} from '../../state/selectors/modal';
import { InviteContactsDialog } from '../conversation/InviteContactsDialog';
import { AddModeratorsDialog } from '../conversation/ModeratorsAddDialog';
import { RemoveModeratorsDialog } from '../conversation/ModeratorsRemoveDialog';
import { UpdateGroupNameDialog } from '../conversation/UpdateGroupNameDialog';
import { UpdateGroupMembersDialog } from '../conversation/UpdateGroupMembersDialog';
import { UserDetailsDialog } from '../UserDetailsDialog';
import { SessionNicknameDialog } from './SessionNicknameDialog';
import { editProfileModal, onionPathModal } from '../../state/ducks/modalDialog';
import { SessionSeedModal } from './SessionSeedModal';
import { AdminLeaveClosedGroupDialog } from '../conversation/AdminLeaveClosedGroupDialog';
import { uploadOurAvatar } from '../../interactions/conversationInteractions';
import { ModalContainer } from './ModalContainer';
import { debounce } from 'underscore';
import { loadDefaultRooms } from '../../opengroup/opengroupV2/ApiUtil';
import { ActionPanelOnionStatusLight } from '../OnionStatusPathDialog';
// tslint:disable-next-line: no-import-side-effect no-submodule-imports
@ -265,7 +235,7 @@ const doAppStartUp = () => {
// this generates the key to encrypt attachments locally
void generateAttachmentKeyIfEmpty();
void OpenGroupManagerV2.getInstance().startPolling();
void getOpenGroupManager().startPolling();
// trigger a sync message if needed for our other devices
void triggerSyncIfNeeded();

View file

@ -8,7 +8,7 @@ import {
prefixify,
publicKeyParam,
} from '../utils/OpenGroupUtils';
import { OpenGroupManagerV2 } from './OpenGroupManagerV2';
import { getOpenGroupManager } from './OpenGroupManagerV2';
// Inputs that should work:
// https://sessionopengroup.co/main?public_key=658d29b91892a2389505596b135e76a53db6e11d613a51dbd3d0816adffb231c
@ -79,11 +79,7 @@ async function joinOpenGroupV2(room: OpenGroupV2Room, fromConfigMessage: boolean
// Try to connect to server
try {
const conversation = await PromiseUtils.timeout(
OpenGroupManagerV2.getInstance().attemptConnectionV2OneAtATime(
prefixedServer,
roomId,
publicKey
),
getOpenGroupManager().attemptConnectionV2OneAtATime(prefixedServer, roomId, publicKey),
20000
);

View file

@ -17,11 +17,18 @@ import _ from 'lodash';
import { deleteAuthToken, DeleteAuthTokenRequest } from './ApiAuth';
import autoBind from 'auto-bind';
let instance: OpenGroupManagerV2 | undefined;
export const getOpenGroupManager = () => {
if (!instance) {
instance = new OpenGroupManagerV2();
}
return instance;
};
export class OpenGroupManagerV2 {
public static readonly useV2OpenGroups = false;
private static instance: OpenGroupManagerV2;
/**
* The map of opengroup pollers, by serverUrl.
* A single poller polls for every room on the specified serverUrl
@ -29,17 +36,10 @@ export class OpenGroupManagerV2 {
private readonly pollers: Map<string, OpenGroupServerPoller> = new Map();
private isPolling = false;
private constructor() {
constructor() {
autoBind(this);
}
public static getInstance() {
if (!OpenGroupManagerV2.instance) {
OpenGroupManagerV2.instance = new OpenGroupManagerV2();
}
return OpenGroupManagerV2.instance;
}
/**
* When we get our configuration from the network, we might get a few times the same open group on two different messages.
* If we don't do anything, we will join them multiple times.
@ -138,7 +138,7 @@ export class OpenGroupManagerV2 {
}
// remove the roomInfos locally for this open group room
await removeV2OpenGroupRoom(roomConvoId);
OpenGroupManagerV2.getInstance().removeRoomFromPolledRooms(infos);
getOpenGroupManager().removeRoomFromPolledRooms(infos);
// no need to remove it from the ConversationController, the convo is already not there
}
} catch (e) {

View file

@ -16,7 +16,7 @@ import { PubKey } from '../types';
import { actions as conversationActions } from '../../state/ducks/conversations';
import { getV2OpenGroupRoom, removeV2OpenGroupRoom } from '../../data/opengroups';
import _ from 'lodash';
import { OpenGroupManagerV2 } from '../../opengroup/opengroupV2/OpenGroupManagerV2';
import { getOpenGroupManager } from '../../opengroup/opengroupV2/OpenGroupManagerV2';
import { deleteAuthToken, DeleteAuthTokenRequest } from '../../opengroup/opengroupV2/ApiAuth';
import { deleteMessagesByConvoIdNoConfirmation } from '../../interactions/conversationInteractions';
@ -211,7 +211,7 @@ export class ConversationController {
_.pick(roomInfos, 'serverUrl', 'roomId', 'token') as DeleteAuthTokenRequest
);
}
OpenGroupManagerV2.getInstance().removeRoomFromPolledRooms(roomInfos);
getOpenGroupManager().removeRoomFromPolledRooms(roomInfos);
// remove the roomInfos locally for this open group room
try {