Skip to content

Commit

Permalink
error dialog is deltachat-rpc-server is not found (#4479)
Browse files Browse the repository at this point in the history
closes #4469
  • Loading branch information
Simon-Laux authored Jan 27, 2025
1 parent 5dd6d77 commit c0fdab6
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 6 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
- add show_app_in_chat option to webxdc info message context menu #4459
- add experimental content protection option (to prevent screenshots and screenrecording the app) #4475
- app picker for webxdc apps in attachement menu #4485
- add special error dialog for the case that deltachat-rpc-server is not found #4479

### Changed
- Update `@deltachat/stdio-rpc-server` and `deltachat/jsonrpc-client` to `1.154.1`
Expand Down
2 changes: 1 addition & 1 deletion packages/target-electron/src/deltachat/controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ export default class DeltaChatController extends EventEmitter {
serverPath
)

await this.account_manager.start()
this.account_manager.start()
log.info('HI')

//todo? multiple instances, accounts is always writable
Expand Down
39 changes: 38 additions & 1 deletion packages/target-electron/src/deltachat/stdio_server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { ChildProcessWithoutNullStreams, spawn } from 'child_process'
import { app, dialog } from 'electron/main'
import { BuildInfo } from '../get-build-info'
import { arch, platform } from 'os'
import { getLogsPath } from '../application-constants'

const log = getLogger('DC-RPC')

Expand All @@ -16,14 +17,50 @@ export class StdioServer {
this.serverProcess = null
}

async start() {
start() {
this.serverProcess = spawn(this.cmd_path, {
env: {
DC_ACCOUNTS_PATH: this.accounts_path,
RUST_LOG: process.env.RUST_LOG,
},
})

this.serverProcess.on('error', err => {
// The 'error' event is emitted whenever:
// - The process could not be spawned.
// - The process could not be killed.
// - Sending a message to the child process failed.
// - The child process was aborted via the signal option.
// ~ https://nodejs.org/api/child_process.html#event-error

if (err.message.endsWith('ENOENT')) {
dialog.showErrorBox(
'Fatal Error: Core Library Missing',
`The DeltaChat Module is missing! This could be due to your antivirus program. Please check the quarantine to restore it and notify the developers about this issue.
You can reach us on [email protected] or on github.com/deltachat/deltachat-desktop/issues.
The missing module should be located at "${this.cmd_path}".
The Log file is located in this folder: ${getLogsPath()}
--------------------
Error: ${err.message}
`
)
} else {
dialog.showErrorBox(
'Fatal Error',
`Error with core has been detected, please contact developers: You can reach us on [email protected] or on github.com/deltachat/deltachat-desktop/issues .
${err.name}: ${err.message}
The Log file is located in this folder: ${getLogsPath()}\n
`
)
}
// I think we can exit in all the cases, because all errors here are serious
app.exit(1)
})

let buffer = ''
this.serverProcess.stdout.on('data', data => {
// console.log(`stdout: ${data}`)
Expand Down
10 changes: 6 additions & 4 deletions packages/target-electron/src/ipc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,14 +65,16 @@ export async function init(cwd: string, logHandler: LogHandler) {
error,
dcController.rpcServerPath
)

dialog.showErrorBox(
'Fatal Error',
`The DeltaChat Module couldn't be loaded.
Please check if all dependencies for deltachat-core are installed!
The Log file is located in this folder: ${getLogsPath()}\n
${dcController.rpcServerPath}\n
${error instanceof Error ? error.message : inspect(error, { depth: null })}`
Please check if all dependencies for deltachat-core are installed!
The Log file is located in this folder: ${getLogsPath()}\n
${dcController.rpcServerPath}\n
${error instanceof Error ? error.message : inspect(error, { depth: null })}`
)

rawApp.exit(1)
}

Expand Down

0 comments on commit c0fdab6

Please sign in to comment.