Skip to content

Commit

Permalink
chore: fixes, refactoring, add/enhance few logs
Browse files Browse the repository at this point in the history
  • Loading branch information
EmiM committed Apr 19, 2024
1 parent cf369a4 commit 7468db5
Show file tree
Hide file tree
Showing 26 changed files with 285 additions and 177 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,7 @@ export class ConnectionsManagerService extends EventEmitter implements OnModuleI
}

public async createCommunity(payload: InitCommunityPayload): Promise<Community | undefined> {
this.logger('Creating community: peers:', payload.peers)
this.logger('Creating community', payload.id)

if (!payload.CA || !payload.rootCa) {
this.logger.error('CA and rootCa are required to create community')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ export class ProcessInChunksService<T> extends EventEmitter {
}

public async process() {
this.logger(`Processing ${this.taskQueue.length} items`)
this.logger(`Processing ${this.taskQueue.length()} items`)
this.taskQueue.resume()
}

Expand Down
25 changes: 25 additions & 0 deletions packages/common/src/const.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
export const DESKTOP_DEV_DATA_DIR = 'Quietdev'
export const DESKTOP_DATA_DIR = 'Quiet2'

export enum Site {
DOMAIN = 'tryquiet.org',
MAIN_PAGE = 'https://tryquiet.org/',
JOIN_PAGE = 'join',
}

export const QUIET_JOIN_PAGE = `${Site.MAIN_PAGE}${Site.JOIN_PAGE}`

export enum JoiningAnotherCommunityWarning {
TITLE = 'You already started to connect to another community',
MESSAGE = "We're sorry but for now you can only be a member of a single community at a time",
}

export enum AlreadyBelongToCommunityWarning {
TITLE = 'You already belong to a community',
MESSAGE = "We're sorry but for now you can only be a member of a single community at a time",
}

export enum InvalidInvitationLinkError {
TITLE = 'Invalid invitation link',
MESSAGE = 'Please check your invitation link and try again',
}
2 changes: 1 addition & 1 deletion packages/common/src/dir.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import path from 'path'
import { DESKTOP_DATA_DIR, DESKTOP_DEV_DATA_DIR } from './static'
import { DESKTOP_DATA_DIR, DESKTOP_DEV_DATA_DIR } from './const'

export type GetDataAppPathDefaults = {
appDataPath?: string
Expand Down
2 changes: 1 addition & 1 deletion packages/common/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export * from './invitationCode'
export * from './static'
export * from './const'
export * from './capitalize'
export * from './process'
export * from './helpers'
Expand Down
2 changes: 1 addition & 1 deletion packages/common/src/invitationCode.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {
INVITER_ADDRESS_PARAM_KEY,
DEEP_URL_SCHEME_WITH_SEPARATOR,
} from './invitationCode'
import { QUIET_JOIN_PAGE } from './static'
import { QUIET_JOIN_PAGE } from './const'
import { validInvitationDatav1, validInvitationDatav2 } from './tests'
import { createLibp2pAddress } from './libp2p'

Expand Down
4 changes: 2 additions & 2 deletions packages/common/src/invitationCode.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { InvitationData, InvitationDataV1, InvitationDataV2, InvitationDataVersion, InvitationPair } from '@quiet/types'
import { QUIET_JOIN_PAGE } from './static'
import { QUIET_JOIN_PAGE } from './const'
import { createLibp2pAddress, isPSKcodeValid } from './libp2p'
// import { CID } from 'multiformats/cid' // Fixme: dependency issue
import Logger from './logger'
Expand Down Expand Up @@ -213,7 +213,7 @@ export const argvInvitationCode = (argv: string[]): InvitationData | null => {
console.log('Not a deep url, not parsing', arg)
continue
}
console.log('Parsing deep url', arg)
logger('Parsing deep url', arg)
invitationData = parseInvitationCodeDeepUrl(arg)
switch (invitationData.version) {
case InvitationDataVersion.v1:
Expand Down
10 changes: 0 additions & 10 deletions packages/common/src/static.ts

This file was deleted.

2 changes: 1 addition & 1 deletion packages/common/src/tests.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { InvitationData, InvitationDataV1, InvitationDataV2, InvitationDataVersion } from '@quiet/types'
import { composeInvitationDeepUrl, composeInvitationShareUrl } from './invitationCode'
import { QUIET_JOIN_PAGE } from './static'
import { QUIET_JOIN_PAGE } from './const'

export const validInvitationDatav1: InvitationDataV1[] = [
{
Expand Down
1 change: 0 additions & 1 deletion packages/desktop/src/main/invitation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import { execSync } from 'child_process'
import { BrowserWindow } from 'electron'

export const processInvitationCode = (mainWindow: BrowserWindow, code: string | string[]) => {
console.log('processInvitationCode:', code)
if (!code || !code.length) return
mainWindow.webContents.send('invitation', {
code,
Expand Down
39 changes: 21 additions & 18 deletions packages/desktop/src/main/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,11 @@ import { autoUpdater } from 'electron-updater'
import electronLocalshortcut from 'electron-localshortcut'
import url from 'url'
import { getPorts, ApplicationPorts, closeHangingBackendProcess } from './backendHelpers'
import pkijs, { setEngine, CryptoEngine } from 'pkijs'
import { setEngine, CryptoEngine } from 'pkijs'
import { Crypto } from '@peculiar/webcrypto'
import logger from './logger'
import { fork, ChildProcess } from 'child_process'
import {
DESKTOP_DATA_DIR,
DESKTOP_DEV_DATA_DIR,
argvInvitationCode,
getFilesData,
parseInvitationCodeDeepUrl,
} from '@quiet/common'
import { DESKTOP_DATA_DIR, DESKTOP_DEV_DATA_DIR, getFilesData } from '@quiet/common'
import { updateDesktopFile, processInvitationCode } from './invitation'
const ElectronStore = require('electron-store')

Expand Down Expand Up @@ -75,7 +69,7 @@ if (!gotTheLock) {
}

app.on('second-instance', (_event, commandLine) => {
console.log('Event: app.second-instance', commandLine)
log('Event: app.second-instance', commandLine)
if (mainWindow) {
if (mainWindow.isMinimized()) mainWindow.restore()
mainWindow.focus()
Expand Down Expand Up @@ -150,7 +144,7 @@ export const applyDevTools = async () => {

app.on('open-url', (event, url) => {
// MacOS only
console.log('app.open-url', url)
log('Event app.open-url', url)
invitationUrl = url // If user opens invitation link with closed app open-url fires too early - before mainWindow is initialized
event.preventDefault()
if (mainWindow) {
Expand Down Expand Up @@ -278,20 +272,24 @@ export const checkForUpdate = async (win: BrowserWindow) => {
}
}
autoUpdater.on('checking-for-update', () => {
log('checking for updates...')
log('updater: checking-for-update')
})
autoUpdater.on('error', error => {
log('UPDATER ERROR: ', error)
log('updater: error:', error)
})
autoUpdater.on('update-not-available', () => {
log('event no update')
log('updater: update-not-available')
})
autoUpdater.on('update-available', info => {
log(info)
log('updater: update-available:', info)
})
autoUpdater.on('update-downloaded', () => {
log('updater: update-downloaded')
win.webContents.send('newUpdateAvailable')
})
autoUpdater.on('before-quit-for-update', () => {
log('updater: before-quit-for-update')
})
}

let ports: ApplicationPorts
Expand Down Expand Up @@ -399,19 +397,19 @@ app.on('ready', async () => {
}

mainWindow.webContents.on('did-fail-load', () => {
log('failed loading webcontents')
log.error('failed loading webcontents')
})

mainWindow.once('close', e => {
if (resetting) return
e.preventDefault()
log('Closing window')
log('Closing main window')
mainWindow?.webContents.send('force-save-state')
})

splash?.once('close', e => {
e.preventDefault()
log('Closing window')
log('Closing splash window')
mainWindow?.webContents.send('force-save-state')
closeBackendProcess()
})
Expand All @@ -422,6 +420,7 @@ app.on('ready', async () => {
})

ipcMain.on('clear-community', () => {
log('ipcMain: clear-community')
resetting = true
backendProcess?.on('message', msg => {
if (msg === 'leftCommunity') {
Expand All @@ -431,12 +430,14 @@ app.on('ready', async () => {
backendProcess?.send('leaveCommunity')
})

ipcMain.on('restartApp', () => {
ipcMain.on('restart-app', () => {
log('ipcMain: restart-app')
app.relaunch()
closeBackendProcess()
})

ipcMain.on('writeTempFile', (event, arg) => {
log('ipcMain: writeTempFile')
const temporaryFilesDirectory = path.join(appDataPath, 'temporaryFiles')
fs.mkdirSync(temporaryFilesDirectory, { recursive: true })
const id = `${Date.now()}_${Math.random().toString(36).substring(0, 20)}`
Expand All @@ -453,6 +454,7 @@ app.on('ready', async () => {
})

ipcMain.on('openUploadFileDialog', async e => {
log('ipcMain: openUploadFileDialog')
let filesDialogResult: Electron.OpenDialogReturnValue
if (!mainWindow) {
console.error('openUploadFileDialog - no mainWindow')
Expand Down Expand Up @@ -513,6 +515,7 @@ app.on('ready', async () => {
})

ipcMain.on('proceed-update', () => {
log('ipcMain: proceed-update')
autoUpdater.quitAndInstall()
})
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export const ErrorModal = () => {
}>(ModalName.criticalError)

const restartApp = () => {
ipcRenderer.send('restartApp')
ipcRenderer.send('restart-app')
}

const testMode = Boolean(process.env.TEST_MODE)
Expand Down
5 changes: 1 addition & 4 deletions packages/desktop/src/renderer/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import Root, { persistor } from './Root'
import store from './store'
import updateHandlers from './store/handlers/update'
import { communities, connection } from '@quiet/state-manager'
import { InvitationData } from '@quiet/types'

if (window && process.env.DEBUG) {
window.localStorage.setItem('debug', process.env.DEBUG)
Expand All @@ -21,16 +20,14 @@ ipcRenderer.on('force-save-state', async _event => {
})

ipcRenderer.on('invitation', (_event, invitation: { code: string | string[] }) => {
console.log('ipcRenderer.on(invitation)', invitation)
if (!invitation.code) return
if (!invitation.code || !invitation.code.length) return

let invitationData: string[]
if (typeof invitation.code === 'string') {
invitationData = [invitation.code]
} else {
invitationData = invitation.code
}
console.log('invitation', invitationData, 'dispatching action')
store.dispatch(communities.actions.customProtocol(invitationData))
})

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ import { StoreKeys } from '../../store/store.keys'
import { modalsActions } from '../modals/modals.slice'
import { ModalName } from '../modals/modals.types'
import { getValidInvitationUrlTestData, validInvitationDatav1, validInvitationDatav2 } from '@quiet/common'
import {
AlreadyBelongToCommunityWarning,
InvalidInvitationLinkError,
JoiningAnotherCommunityWarning,
} from '@quiet/common'

describe('Handle invitation code', () => {
let store: Store
Expand Down Expand Up @@ -70,8 +75,44 @@ describe('Handle invitation code', () => {
modalsActions.openModal({
name: ModalName.warningModal,
args: {
title: 'You already belong to a community',
subtitle: "We're sorry but for now you can only be a member of a single community at a time.",
title: AlreadyBelongToCommunityWarning.TITLE,
subtitle: AlreadyBelongToCommunityWarning.MESSAGE,
},
})
)
.not.put(communities.actions.createNetwork(createNetworkPayload))
.run()
})

it('does not try to create network if user used v2 invitation link and is joining another community', async () => {
const invitationData = validInvitationDatav2[0]
community = await factory.create<ReturnType<typeof communities.actions.addNewCommunity>['payload']>('Community', {
name: '',
inviteData: invitationData,
})
const newInvitationData = {
...invitationData,
serverAddress: 'http://something-else.pl',
}
const createNetworkPayload: CreateNetworkPayload = {
ownership: CommunityOwnership.User,
inviteData: newInvitationData,
}

store.dispatch(communities.actions.addNewCommunity(community))
store.dispatch(communities.actions.setCurrentCommunity(community.id))

await expectSaga(
customProtocolSaga,
communities.actions.customProtocol([getValidInvitationUrlTestData(newInvitationData).deepUrl()])
)
.withState(store.getState())
.put(
modalsActions.openModal({
name: ModalName.warningModal,
args: {
title: JoiningAnotherCommunityWarning.TITLE,
subtitle: JoiningAnotherCommunityWarning.MESSAGE,
},
})
)
Expand All @@ -90,17 +131,48 @@ describe('Handle invitation code', () => {
communities.actions.customProtocol(['someArg', 'quiet://?k=BNlxfE2WBF7LrlpIX0CvECN5o1oZtA16PkAb7GYiwYw='])
)
.withState(store.getState())
.put(communities.actions.clearInvitationCodes())
.put(
modalsActions.openModal({
name: ModalName.warningModal,
args: {
title: 'Invalid link',
subtitle: 'The invite link you received is not valid. Please check it and try again.',
title: InvalidInvitationLinkError.TITLE,
subtitle: InvalidInvitationLinkError.MESSAGE,
},
})
)
.not.put(communities.actions.createNetwork(createNetworkPayload))
.run()
})

test("doesn't display error if user is connecting with the same community", async () => {
community = await factory.create<ReturnType<typeof communities.actions.addNewCommunity>['payload']>('Community', {
name: '',
psk: validInvitationData.psk,
})

const createNetworkPayload: CreateNetworkPayload = {
ownership: CommunityOwnership.User,
inviteData: validInvitationData,
}

store.dispatch(communities.actions.addNewCommunity(community))
store.dispatch(communities.actions.setCurrentCommunity(community.id))

await expectSaga(customProtocolSaga, communities.actions.customProtocol([validInvitationDeepUrl]))
.withState(store.getState())
.not.put.like({
action: {
type: modalsActions.openModal.type,
payload: {
name: ModalName.warningModal,
params: {
title: AlreadyBelongToCommunityWarning.TITLE,
message: AlreadyBelongToCommunityWarning.MESSAGE,
},
},
},
})
.put(communities.actions.createNetwork(createNetworkPayload))
.run()
})
})
Loading

0 comments on commit 7468db5

Please sign in to comment.