diff options
author | 2019-07-30 15:33:29 +0200 | |
---|---|---|
committer | 2019-07-30 15:33:29 +0200 | |
commit | 4666e85de5c40e4cd7fa952a1d1c873a43dc60fb (patch) | |
tree | c53dad1ac7eea1641b79825d0d171bb027603b60 | |
parent | fix(Notifications): Fix issue that blocked notifications from e.g. Slack (diff) | |
download | ferdium-app-4666e85de5c40e4cd7fa952a1d1c873a43dc60fb.tar.gz ferdium-app-4666e85de5c40e4cd7fa952a1d1c873a43dc60fb.tar.zst ferdium-app-4666e85de5c40e4cd7fa952a1d1c873a43dc60fb.zip |
feat(App): Add option to copy debug information via the help menu
-rw-r--r-- | src/i18n/locales/defaultMessages.json | 139 | ||||
-rw-r--r-- | src/i18n/locales/en-US.json | 5 | ||||
-rw-r--r-- | src/i18n/messages/src/lib/Menu.json | 139 | ||||
-rw-r--r-- | src/lib/Menu.js | 40 | ||||
-rw-r--r-- | src/stores/AppStore.js | 25 |
5 files changed, 245 insertions, 103 deletions
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index d517b456b..eca3062c2 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json | |||
@@ -4291,328 +4291,367 @@ | |||
4291 | } | 4291 | } |
4292 | }, | 4292 | }, |
4293 | { | 4293 | { |
4294 | "defaultMessage": "!!!Terms of Service", | 4294 | "defaultMessage": "!!!Copy Debug Information", |
4295 | "end": { | 4295 | "end": { |
4296 | "column": 3, | 4296 | "column": 3, |
4297 | "line": 134 | 4297 | "line": 134 |
4298 | }, | 4298 | }, |
4299 | "file": "src/lib/Menu.js", | 4299 | "file": "src/lib/Menu.js", |
4300 | "id": "menu.help.debugInfo", | ||
4301 | "start": { | ||
4302 | "column": 13, | ||
4303 | "line": 131 | ||
4304 | } | ||
4305 | }, | ||
4306 | { | ||
4307 | "defaultMessage": "!!!Franz Debug Information", | ||
4308 | "end": { | ||
4309 | "column": 3, | ||
4310 | "line": 138 | ||
4311 | }, | ||
4312 | "file": "src/lib/Menu.js", | ||
4313 | "id": "menu.help.debugInfoCopiedHeadline", | ||
4314 | "start": { | ||
4315 | "column": 27, | ||
4316 | "line": 135 | ||
4317 | } | ||
4318 | }, | ||
4319 | { | ||
4320 | "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", | ||
4321 | "end": { | ||
4322 | "column": 3, | ||
4323 | "line": 142 | ||
4324 | }, | ||
4325 | "file": "src/lib/Menu.js", | ||
4326 | "id": "menu.help.debugInfoCopiedBody", | ||
4327 | "start": { | ||
4328 | "column": 23, | ||
4329 | "line": 139 | ||
4330 | } | ||
4331 | }, | ||
4332 | { | ||
4333 | "defaultMessage": "!!!Terms of Service", | ||
4334 | "end": { | ||
4335 | "column": 3, | ||
4336 | "line": 146 | ||
4337 | }, | ||
4338 | "file": "src/lib/Menu.js", | ||
4300 | "id": "menu.help.tos", | 4339 | "id": "menu.help.tos", |
4301 | "start": { | 4340 | "start": { |
4302 | "column": 7, | 4341 | "column": 7, |
4303 | "line": 131 | 4342 | "line": 143 |
4304 | } | 4343 | } |
4305 | }, | 4344 | }, |
4306 | { | 4345 | { |
4307 | "defaultMessage": "!!!Privacy Statement", | 4346 | "defaultMessage": "!!!Privacy Statement", |
4308 | "end": { | 4347 | "end": { |
4309 | "column": 3, | 4348 | "column": 3, |
4310 | "line": 138 | 4349 | "line": 150 |
4311 | }, | 4350 | }, |
4312 | "file": "src/lib/Menu.js", | 4351 | "file": "src/lib/Menu.js", |
4313 | "id": "menu.help.privacy", | 4352 | "id": "menu.help.privacy", |
4314 | "start": { | 4353 | "start": { |
4315 | "column": 11, | 4354 | "column": 11, |
4316 | "line": 135 | 4355 | "line": 147 |
4317 | } | 4356 | } |
4318 | }, | 4357 | }, |
4319 | { | 4358 | { |
4320 | "defaultMessage": "!!!File", | 4359 | "defaultMessage": "!!!File", |
4321 | "end": { | 4360 | "end": { |
4322 | "column": 3, | 4361 | "column": 3, |
4323 | "line": 142 | 4362 | "line": 154 |
4324 | }, | 4363 | }, |
4325 | "file": "src/lib/Menu.js", | 4364 | "file": "src/lib/Menu.js", |
4326 | "id": "menu.file", | 4365 | "id": "menu.file", |
4327 | "start": { | 4366 | "start": { |
4328 | "column": 8, | 4367 | "column": 8, |
4329 | "line": 139 | 4368 | "line": 151 |
4330 | } | 4369 | } |
4331 | }, | 4370 | }, |
4332 | { | 4371 | { |
4333 | "defaultMessage": "!!!View", | 4372 | "defaultMessage": "!!!View", |
4334 | "end": { | 4373 | "end": { |
4335 | "column": 3, | 4374 | "column": 3, |
4336 | "line": 146 | 4375 | "line": 158 |
4337 | }, | 4376 | }, |
4338 | "file": "src/lib/Menu.js", | 4377 | "file": "src/lib/Menu.js", |
4339 | "id": "menu.view", | 4378 | "id": "menu.view", |
4340 | "start": { | 4379 | "start": { |
4341 | "column": 8, | 4380 | "column": 8, |
4342 | "line": 143 | 4381 | "line": 155 |
4343 | } | 4382 | } |
4344 | }, | 4383 | }, |
4345 | { | 4384 | { |
4346 | "defaultMessage": "!!!Services", | 4385 | "defaultMessage": "!!!Services", |
4347 | "end": { | 4386 | "end": { |
4348 | "column": 3, | 4387 | "column": 3, |
4349 | "line": 150 | 4388 | "line": 162 |
4350 | }, | 4389 | }, |
4351 | "file": "src/lib/Menu.js", | 4390 | "file": "src/lib/Menu.js", |
4352 | "id": "menu.services", | 4391 | "id": "menu.services", |
4353 | "start": { | 4392 | "start": { |
4354 | "column": 12, | 4393 | "column": 12, |
4355 | "line": 147 | 4394 | "line": 159 |
4356 | } | 4395 | } |
4357 | }, | 4396 | }, |
4358 | { | 4397 | { |
4359 | "defaultMessage": "!!!Window", | 4398 | "defaultMessage": "!!!Window", |
4360 | "end": { | 4399 | "end": { |
4361 | "column": 3, | 4400 | "column": 3, |
4362 | "line": 154 | 4401 | "line": 166 |
4363 | }, | 4402 | }, |
4364 | "file": "src/lib/Menu.js", | 4403 | "file": "src/lib/Menu.js", |
4365 | "id": "menu.window", | 4404 | "id": "menu.window", |
4366 | "start": { | 4405 | "start": { |
4367 | "column": 10, | 4406 | "column": 10, |
4368 | "line": 151 | 4407 | "line": 163 |
4369 | } | 4408 | } |
4370 | }, | 4409 | }, |
4371 | { | 4410 | { |
4372 | "defaultMessage": "!!!Help", | 4411 | "defaultMessage": "!!!Help", |
4373 | "end": { | 4412 | "end": { |
4374 | "column": 3, | 4413 | "column": 3, |
4375 | "line": 158 | 4414 | "line": 170 |
4376 | }, | 4415 | }, |
4377 | "file": "src/lib/Menu.js", | 4416 | "file": "src/lib/Menu.js", |
4378 | "id": "menu.help", | 4417 | "id": "menu.help", |
4379 | "start": { | 4418 | "start": { |
4380 | "column": 8, | 4419 | "column": 8, |
4381 | "line": 155 | 4420 | "line": 167 |
4382 | } | 4421 | } |
4383 | }, | 4422 | }, |
4384 | { | 4423 | { |
4385 | "defaultMessage": "!!!About Franz", | 4424 | "defaultMessage": "!!!About Franz", |
4386 | "end": { | 4425 | "end": { |
4387 | "column": 3, | 4426 | "column": 3, |
4388 | "line": 162 | 4427 | "line": 174 |
4389 | }, | 4428 | }, |
4390 | "file": "src/lib/Menu.js", | 4429 | "file": "src/lib/Menu.js", |
4391 | "id": "menu.app.about", | 4430 | "id": "menu.app.about", |
4392 | "start": { | 4431 | "start": { |
4393 | "column": 9, | 4432 | "column": 9, |
4394 | "line": 159 | 4433 | "line": 171 |
4395 | } | 4434 | } |
4396 | }, | 4435 | }, |
4397 | { | 4436 | { |
4398 | "defaultMessage": "!!!What's new?", | 4437 | "defaultMessage": "!!!What's new?", |
4399 | "end": { | 4438 | "end": { |
4400 | "column": 3, | 4439 | "column": 3, |
4401 | "line": 166 | 4440 | "line": 178 |
4402 | }, | 4441 | }, |
4403 | "file": "src/lib/Menu.js", | 4442 | "file": "src/lib/Menu.js", |
4404 | "id": "menu.app.announcement", | 4443 | "id": "menu.app.announcement", |
4405 | "start": { | 4444 | "start": { |
4406 | "column": 16, | 4445 | "column": 16, |
4407 | "line": 163 | 4446 | "line": 175 |
4408 | } | 4447 | } |
4409 | }, | 4448 | }, |
4410 | { | 4449 | { |
4411 | "defaultMessage": "!!!Settings", | 4450 | "defaultMessage": "!!!Settings", |
4412 | "end": { | 4451 | "end": { |
4413 | "column": 3, | 4452 | "column": 3, |
4414 | "line": 170 | 4453 | "line": 182 |
4415 | }, | 4454 | }, |
4416 | "file": "src/lib/Menu.js", | 4455 | "file": "src/lib/Menu.js", |
4417 | "id": "menu.app.settings", | 4456 | "id": "menu.app.settings", |
4418 | "start": { | 4457 | "start": { |
4419 | "column": 12, | 4458 | "column": 12, |
4420 | "line": 167 | 4459 | "line": 179 |
4421 | } | 4460 | } |
4422 | }, | 4461 | }, |
4423 | { | 4462 | { |
4424 | "defaultMessage": "!!!Check for updates", | 4463 | "defaultMessage": "!!!Check for updates", |
4425 | "end": { | 4464 | "end": { |
4426 | "column": 3, | 4465 | "column": 3, |
4427 | "line": 174 | 4466 | "line": 186 |
4428 | }, | 4467 | }, |
4429 | "file": "src/lib/Menu.js", | 4468 | "file": "src/lib/Menu.js", |
4430 | "id": "menu.app.checkForUpdates", | 4469 | "id": "menu.app.checkForUpdates", |
4431 | "start": { | 4470 | "start": { |
4432 | "column": 19, | 4471 | "column": 19, |
4433 | "line": 171 | 4472 | "line": 183 |
4434 | } | 4473 | } |
4435 | }, | 4474 | }, |
4436 | { | 4475 | { |
4437 | "defaultMessage": "!!!Hide", | 4476 | "defaultMessage": "!!!Hide", |
4438 | "end": { | 4477 | "end": { |
4439 | "column": 3, | 4478 | "column": 3, |
4440 | "line": 178 | 4479 | "line": 190 |
4441 | }, | 4480 | }, |
4442 | "file": "src/lib/Menu.js", | 4481 | "file": "src/lib/Menu.js", |
4443 | "id": "menu.app.hide", | 4482 | "id": "menu.app.hide", |
4444 | "start": { | 4483 | "start": { |
4445 | "column": 8, | 4484 | "column": 8, |
4446 | "line": 175 | 4485 | "line": 187 |
4447 | } | 4486 | } |
4448 | }, | 4487 | }, |
4449 | { | 4488 | { |
4450 | "defaultMessage": "!!!Hide Others", | 4489 | "defaultMessage": "!!!Hide Others", |
4451 | "end": { | 4490 | "end": { |
4452 | "column": 3, | 4491 | "column": 3, |
4453 | "line": 182 | 4492 | "line": 194 |
4454 | }, | 4493 | }, |
4455 | "file": "src/lib/Menu.js", | 4494 | "file": "src/lib/Menu.js", |
4456 | "id": "menu.app.hideOthers", | 4495 | "id": "menu.app.hideOthers", |
4457 | "start": { | 4496 | "start": { |
4458 | "column": 14, | 4497 | "column": 14, |
4459 | "line": 179 | 4498 | "line": 191 |
4460 | } | 4499 | } |
4461 | }, | 4500 | }, |
4462 | { | 4501 | { |
4463 | "defaultMessage": "!!!Unhide", | 4502 | "defaultMessage": "!!!Unhide", |
4464 | "end": { | 4503 | "end": { |
4465 | "column": 3, | 4504 | "column": 3, |
4466 | "line": 186 | 4505 | "line": 198 |
4467 | }, | 4506 | }, |
4468 | "file": "src/lib/Menu.js", | 4507 | "file": "src/lib/Menu.js", |
4469 | "id": "menu.app.unhide", | 4508 | "id": "menu.app.unhide", |
4470 | "start": { | 4509 | "start": { |
4471 | "column": 10, | 4510 | "column": 10, |
4472 | "line": 183 | 4511 | "line": 195 |
4473 | } | 4512 | } |
4474 | }, | 4513 | }, |
4475 | { | 4514 | { |
4476 | "defaultMessage": "!!!Quit", | 4515 | "defaultMessage": "!!!Quit", |
4477 | "end": { | 4516 | "end": { |
4478 | "column": 3, | 4517 | "column": 3, |
4479 | "line": 190 | 4518 | "line": 202 |
4480 | }, | 4519 | }, |
4481 | "file": "src/lib/Menu.js", | 4520 | "file": "src/lib/Menu.js", |
4482 | "id": "menu.app.quit", | 4521 | "id": "menu.app.quit", |
4483 | "start": { | 4522 | "start": { |
4484 | "column": 8, | 4523 | "column": 8, |
4485 | "line": 187 | 4524 | "line": 199 |
4486 | } | 4525 | } |
4487 | }, | 4526 | }, |
4488 | { | 4527 | { |
4489 | "defaultMessage": "!!!Add New Service...", | 4528 | "defaultMessage": "!!!Add New Service...", |
4490 | "end": { | 4529 | "end": { |
4491 | "column": 3, | 4530 | "column": 3, |
4492 | "line": 194 | 4531 | "line": 206 |
4493 | }, | 4532 | }, |
4494 | "file": "src/lib/Menu.js", | 4533 | "file": "src/lib/Menu.js", |
4495 | "id": "menu.services.addNewService", | 4534 | "id": "menu.services.addNewService", |
4496 | "start": { | 4535 | "start": { |
4497 | "column": 17, | 4536 | "column": 17, |
4498 | "line": 191 | 4537 | "line": 203 |
4499 | } | 4538 | } |
4500 | }, | 4539 | }, |
4501 | { | 4540 | { |
4502 | "defaultMessage": "!!!Add New Workspace...", | 4541 | "defaultMessage": "!!!Add New Workspace...", |
4503 | "end": { | 4542 | "end": { |
4504 | "column": 3, | 4543 | "column": 3, |
4505 | "line": 198 | 4544 | "line": 210 |
4506 | }, | 4545 | }, |
4507 | "file": "src/lib/Menu.js", | 4546 | "file": "src/lib/Menu.js", |
4508 | "id": "menu.workspaces.addNewWorkspace", | 4547 | "id": "menu.workspaces.addNewWorkspace", |
4509 | "start": { | 4548 | "start": { |
4510 | "column": 19, | 4549 | "column": 19, |
4511 | "line": 195 | 4550 | "line": 207 |
4512 | } | 4551 | } |
4513 | }, | 4552 | }, |
4514 | { | 4553 | { |
4515 | "defaultMessage": "!!!Open workspace drawer", | 4554 | "defaultMessage": "!!!Open workspace drawer", |
4516 | "end": { | 4555 | "end": { |
4517 | "column": 3, | 4556 | "column": 3, |
4518 | "line": 202 | 4557 | "line": 214 |
4519 | }, | 4558 | }, |
4520 | "file": "src/lib/Menu.js", | 4559 | "file": "src/lib/Menu.js", |
4521 | "id": "menu.workspaces.openWorkspaceDrawer", | 4560 | "id": "menu.workspaces.openWorkspaceDrawer", |
4522 | "start": { | 4561 | "start": { |
4523 | "column": 23, | 4562 | "column": 23, |
4524 | "line": 199 | 4563 | "line": 211 |
4525 | } | 4564 | } |
4526 | }, | 4565 | }, |
4527 | { | 4566 | { |
4528 | "defaultMessage": "!!!Close workspace drawer", | 4567 | "defaultMessage": "!!!Close workspace drawer", |
4529 | "end": { | 4568 | "end": { |
4530 | "column": 3, | 4569 | "column": 3, |
4531 | "line": 206 | 4570 | "line": 218 |
4532 | }, | 4571 | }, |
4533 | "file": "src/lib/Menu.js", | 4572 | "file": "src/lib/Menu.js", |
4534 | "id": "menu.workspaces.closeWorkspaceDrawer", | 4573 | "id": "menu.workspaces.closeWorkspaceDrawer", |
4535 | "start": { | 4574 | "start": { |
4536 | "column": 24, | 4575 | "column": 24, |
4537 | "line": 203 | 4576 | "line": 215 |
4538 | } | 4577 | } |
4539 | }, | 4578 | }, |
4540 | { | 4579 | { |
4541 | "defaultMessage": "!!!Activate next service...", | 4580 | "defaultMessage": "!!!Activate next service...", |
4542 | "end": { | 4581 | "end": { |
4543 | "column": 3, | 4582 | "column": 3, |
4544 | "line": 210 | 4583 | "line": 222 |
4545 | }, | 4584 | }, |
4546 | "file": "src/lib/Menu.js", | 4585 | "file": "src/lib/Menu.js", |
4547 | "id": "menu.services.setNextServiceActive", | 4586 | "id": "menu.services.setNextServiceActive", |
4548 | "start": { | 4587 | "start": { |
4549 | "column": 23, | 4588 | "column": 23, |
4550 | "line": 207 | 4589 | "line": 219 |
4551 | } | 4590 | } |
4552 | }, | 4591 | }, |
4553 | { | 4592 | { |
4554 | "defaultMessage": "!!!Activate previous service...", | 4593 | "defaultMessage": "!!!Activate previous service...", |
4555 | "end": { | 4594 | "end": { |
4556 | "column": 3, | 4595 | "column": 3, |
4557 | "line": 214 | 4596 | "line": 226 |
4558 | }, | 4597 | }, |
4559 | "file": "src/lib/Menu.js", | 4598 | "file": "src/lib/Menu.js", |
4560 | "id": "menu.services.activatePreviousService", | 4599 | "id": "menu.services.activatePreviousService", |
4561 | "start": { | 4600 | "start": { |
4562 | "column": 27, | 4601 | "column": 27, |
4563 | "line": 211 | 4602 | "line": 223 |
4564 | } | 4603 | } |
4565 | }, | 4604 | }, |
4566 | { | 4605 | { |
4567 | "defaultMessage": "!!!Disable notifications & audio", | 4606 | "defaultMessage": "!!!Disable notifications & audio", |
4568 | "end": { | 4607 | "end": { |
4569 | "column": 3, | 4608 | "column": 3, |
4570 | "line": 218 | 4609 | "line": 230 |
4571 | }, | 4610 | }, |
4572 | "file": "src/lib/Menu.js", | 4611 | "file": "src/lib/Menu.js", |
4573 | "id": "sidebar.muteApp", | 4612 | "id": "sidebar.muteApp", |
4574 | "start": { | 4613 | "start": { |
4575 | "column": 11, | 4614 | "column": 11, |
4576 | "line": 215 | 4615 | "line": 227 |
4577 | } | 4616 | } |
4578 | }, | 4617 | }, |
4579 | { | 4618 | { |
4580 | "defaultMessage": "!!!Enable notifications & audio", | 4619 | "defaultMessage": "!!!Enable notifications & audio", |
4581 | "end": { | 4620 | "end": { |
4582 | "column": 3, | 4621 | "column": 3, |
4583 | "line": 222 | 4622 | "line": 234 |
4584 | }, | 4623 | }, |
4585 | "file": "src/lib/Menu.js", | 4624 | "file": "src/lib/Menu.js", |
4586 | "id": "sidebar.unmuteApp", | 4625 | "id": "sidebar.unmuteApp", |
4587 | "start": { | 4626 | "start": { |
4588 | "column": 13, | 4627 | "column": 13, |
4589 | "line": 219 | 4628 | "line": 231 |
4590 | } | 4629 | } |
4591 | }, | 4630 | }, |
4592 | { | 4631 | { |
4593 | "defaultMessage": "!!!Workspaces", | 4632 | "defaultMessage": "!!!Workspaces", |
4594 | "end": { | 4633 | "end": { |
4595 | "column": 3, | 4634 | "column": 3, |
4596 | "line": 226 | 4635 | "line": 238 |
4597 | }, | 4636 | }, |
4598 | "file": "src/lib/Menu.js", | 4637 | "file": "src/lib/Menu.js", |
4599 | "id": "menu.workspaces", | 4638 | "id": "menu.workspaces", |
4600 | "start": { | 4639 | "start": { |
4601 | "column": 14, | 4640 | "column": 14, |
4602 | "line": 223 | 4641 | "line": 235 |
4603 | } | 4642 | } |
4604 | }, | 4643 | }, |
4605 | { | 4644 | { |
4606 | "defaultMessage": "!!!Default", | 4645 | "defaultMessage": "!!!Default", |
4607 | "end": { | 4646 | "end": { |
4608 | "column": 3, | 4647 | "column": 3, |
4609 | "line": 230 | 4648 | "line": 242 |
4610 | }, | 4649 | }, |
4611 | "file": "src/lib/Menu.js", | 4650 | "file": "src/lib/Menu.js", |
4612 | "id": "menu.workspaces.defaultWorkspace", | 4651 | "id": "menu.workspaces.defaultWorkspace", |
4613 | "start": { | 4652 | "start": { |
4614 | "column": 20, | 4653 | "column": 20, |
4615 | "line": 227 | 4654 | "line": 239 |
4616 | } | 4655 | } |
4617 | } | 4656 | } |
4618 | ], | 4657 | ], |
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index e2edbd596..27987e5b7 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json | |||
@@ -68,6 +68,9 @@ | |||
68 | "menu.file": "File", | 68 | "menu.file": "File", |
69 | "menu.help": "Help", | 69 | "menu.help": "Help", |
70 | "menu.help.changelog": "Changelog", | 70 | "menu.help.changelog": "Changelog", |
71 | "menu.help.debugInfo": "Copy Debug Information", | ||
72 | "menu.help.debugInfoCopiedBody": "Your Debug Information has been copied to your clipboard.", | ||
73 | "menu.help.debugInfoCopiedHeadline": "Franz Debug Information", | ||
71 | "menu.help.learnMore": "Learn More", | 74 | "menu.help.learnMore": "Learn More", |
72 | "menu.help.privacy": "Privacy Statement", | 75 | "menu.help.privacy": "Privacy Statement", |
73 | "menu.help.support": "Support", | 76 | "menu.help.support": "Support", |
@@ -329,4 +332,4 @@ | |||
329 | "workspaceDrawer.workspaceFeatureInfo": "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>", | 332 | "workspaceDrawer.workspaceFeatureInfo": "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>", |
330 | "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", | 333 | "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", |
331 | "workspaces.switchingIndicator.switchingTo": "Switching to" | 334 | "workspaces.switchingIndicator.switchingTo": "Switching to" |
332 | } \ No newline at end of file | 335 | } |
diff --git a/src/i18n/messages/src/lib/Menu.json b/src/i18n/messages/src/lib/Menu.json index daafb0900..6f878cbd1 100644 --- a/src/i18n/messages/src/lib/Menu.json +++ b/src/i18n/messages/src/lib/Menu.json | |||
@@ -377,15 +377,54 @@ | |||
377 | } | 377 | } |
378 | }, | 378 | }, |
379 | { | 379 | { |
380 | "id": "menu.help.debugInfo", | ||
381 | "defaultMessage": "!!!Copy Debug Information", | ||
382 | "file": "src/lib/Menu.js", | ||
383 | "start": { | ||
384 | "line": 131, | ||
385 | "column": 13 | ||
386 | }, | ||
387 | "end": { | ||
388 | "line": 134, | ||
389 | "column": 3 | ||
390 | } | ||
391 | }, | ||
392 | { | ||
393 | "id": "menu.help.debugInfoCopiedHeadline", | ||
394 | "defaultMessage": "!!!Franz Debug Information", | ||
395 | "file": "src/lib/Menu.js", | ||
396 | "start": { | ||
397 | "line": 135, | ||
398 | "column": 27 | ||
399 | }, | ||
400 | "end": { | ||
401 | "line": 138, | ||
402 | "column": 3 | ||
403 | } | ||
404 | }, | ||
405 | { | ||
406 | "id": "menu.help.debugInfoCopiedBody", | ||
407 | "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", | ||
408 | "file": "src/lib/Menu.js", | ||
409 | "start": { | ||
410 | "line": 139, | ||
411 | "column": 23 | ||
412 | }, | ||
413 | "end": { | ||
414 | "line": 142, | ||
415 | "column": 3 | ||
416 | } | ||
417 | }, | ||
418 | { | ||
380 | "id": "menu.help.tos", | 419 | "id": "menu.help.tos", |
381 | "defaultMessage": "!!!Terms of Service", | 420 | "defaultMessage": "!!!Terms of Service", |
382 | "file": "src/lib/Menu.js", | 421 | "file": "src/lib/Menu.js", |
383 | "start": { | 422 | "start": { |
384 | "line": 131, | 423 | "line": 143, |
385 | "column": 7 | 424 | "column": 7 |
386 | }, | 425 | }, |
387 | "end": { | 426 | "end": { |
388 | "line": 134, | 427 | "line": 146, |
389 | "column": 3 | 428 | "column": 3 |
390 | } | 429 | } |
391 | }, | 430 | }, |
@@ -394,11 +433,11 @@ | |||
394 | "defaultMessage": "!!!Privacy Statement", | 433 | "defaultMessage": "!!!Privacy Statement", |
395 | "file": "src/lib/Menu.js", | 434 | "file": "src/lib/Menu.js", |
396 | "start": { | 435 | "start": { |
397 | "line": 135, | 436 | "line": 147, |
398 | "column": 11 | 437 | "column": 11 |
399 | }, | 438 | }, |
400 | "end": { | 439 | "end": { |
401 | "line": 138, | 440 | "line": 150, |
402 | "column": 3 | 441 | "column": 3 |
403 | } | 442 | } |
404 | }, | 443 | }, |
@@ -407,11 +446,11 @@ | |||
407 | "defaultMessage": "!!!File", | 446 | "defaultMessage": "!!!File", |
408 | "file": "src/lib/Menu.js", | 447 | "file": "src/lib/Menu.js", |
409 | "start": { | 448 | "start": { |
410 | "line": 139, | 449 | "line": 151, |
411 | "column": 8 | 450 | "column": 8 |
412 | }, | 451 | }, |
413 | "end": { | 452 | "end": { |
414 | "line": 142, | 453 | "line": 154, |
415 | "column": 3 | 454 | "column": 3 |
416 | } | 455 | } |
417 | }, | 456 | }, |
@@ -420,11 +459,11 @@ | |||
420 | "defaultMessage": "!!!View", | 459 | "defaultMessage": "!!!View", |
421 | "file": "src/lib/Menu.js", | 460 | "file": "src/lib/Menu.js", |
422 | "start": { | 461 | "start": { |
423 | "line": 143, | 462 | "line": 155, |
424 | "column": 8 | 463 | "column": 8 |
425 | }, | 464 | }, |
426 | "end": { | 465 | "end": { |
427 | "line": 146, | 466 | "line": 158, |
428 | "column": 3 | 467 | "column": 3 |
429 | } | 468 | } |
430 | }, | 469 | }, |
@@ -433,11 +472,11 @@ | |||
433 | "defaultMessage": "!!!Services", | 472 | "defaultMessage": "!!!Services", |
434 | "file": "src/lib/Menu.js", | 473 | "file": "src/lib/Menu.js", |
435 | "start": { | 474 | "start": { |
436 | "line": 147, | 475 | "line": 159, |
437 | "column": 12 | 476 | "column": 12 |
438 | }, | 477 | }, |
439 | "end": { | 478 | "end": { |
440 | "line": 150, | 479 | "line": 162, |
441 | "column": 3 | 480 | "column": 3 |
442 | } | 481 | } |
443 | }, | 482 | }, |
@@ -446,11 +485,11 @@ | |||
446 | "defaultMessage": "!!!Window", | 485 | "defaultMessage": "!!!Window", |
447 | "file": "src/lib/Menu.js", | 486 | "file": "src/lib/Menu.js", |
448 | "start": { | 487 | "start": { |
449 | "line": 151, | 488 | "line": 163, |
450 | "column": 10 | 489 | "column": 10 |
451 | }, | 490 | }, |
452 | "end": { | 491 | "end": { |
453 | "line": 154, | 492 | "line": 166, |
454 | "column": 3 | 493 | "column": 3 |
455 | } | 494 | } |
456 | }, | 495 | }, |
@@ -459,11 +498,11 @@ | |||
459 | "defaultMessage": "!!!Help", | 498 | "defaultMessage": "!!!Help", |
460 | "file": "src/lib/Menu.js", | 499 | "file": "src/lib/Menu.js", |
461 | "start": { | 500 | "start": { |
462 | "line": 155, | 501 | "line": 167, |
463 | "column": 8 | 502 | "column": 8 |
464 | }, | 503 | }, |
465 | "end": { | 504 | "end": { |
466 | "line": 158, | 505 | "line": 170, |
467 | "column": 3 | 506 | "column": 3 |
468 | } | 507 | } |
469 | }, | 508 | }, |
@@ -472,11 +511,11 @@ | |||
472 | "defaultMessage": "!!!About Franz", | 511 | "defaultMessage": "!!!About Franz", |
473 | "file": "src/lib/Menu.js", | 512 | "file": "src/lib/Menu.js", |
474 | "start": { | 513 | "start": { |
475 | "line": 159, | 514 | "line": 171, |
476 | "column": 9 | 515 | "column": 9 |
477 | }, | 516 | }, |
478 | "end": { | 517 | "end": { |
479 | "line": 162, | 518 | "line": 174, |
480 | "column": 3 | 519 | "column": 3 |
481 | } | 520 | } |
482 | }, | 521 | }, |
@@ -485,11 +524,11 @@ | |||
485 | "defaultMessage": "!!!What's new?", | 524 | "defaultMessage": "!!!What's new?", |
486 | "file": "src/lib/Menu.js", | 525 | "file": "src/lib/Menu.js", |
487 | "start": { | 526 | "start": { |
488 | "line": 163, | 527 | "line": 175, |
489 | "column": 16 | 528 | "column": 16 |
490 | }, | 529 | }, |
491 | "end": { | 530 | "end": { |
492 | "line": 166, | 531 | "line": 178, |
493 | "column": 3 | 532 | "column": 3 |
494 | } | 533 | } |
495 | }, | 534 | }, |
@@ -498,11 +537,11 @@ | |||
498 | "defaultMessage": "!!!Settings", | 537 | "defaultMessage": "!!!Settings", |
499 | "file": "src/lib/Menu.js", | 538 | "file": "src/lib/Menu.js", |
500 | "start": { | 539 | "start": { |
501 | "line": 167, | 540 | "line": 179, |
502 | "column": 12 | 541 | "column": 12 |
503 | }, | 542 | }, |
504 | "end": { | 543 | "end": { |
505 | "line": 170, | 544 | "line": 182, |
506 | "column": 3 | 545 | "column": 3 |
507 | } | 546 | } |
508 | }, | 547 | }, |
@@ -511,11 +550,11 @@ | |||
511 | "defaultMessage": "!!!Check for updates", | 550 | "defaultMessage": "!!!Check for updates", |
512 | "file": "src/lib/Menu.js", | 551 | "file": "src/lib/Menu.js", |
513 | "start": { | 552 | "start": { |
514 | "line": 171, | 553 | "line": 183, |
515 | "column": 19 | 554 | "column": 19 |
516 | }, | 555 | }, |
517 | "end": { | 556 | "end": { |
518 | "line": 174, | 557 | "line": 186, |
519 | "column": 3 | 558 | "column": 3 |
520 | } | 559 | } |
521 | }, | 560 | }, |
@@ -524,11 +563,11 @@ | |||
524 | "defaultMessage": "!!!Hide", | 563 | "defaultMessage": "!!!Hide", |
525 | "file": "src/lib/Menu.js", | 564 | "file": "src/lib/Menu.js", |
526 | "start": { | 565 | "start": { |
527 | "line": 175, | 566 | "line": 187, |
528 | "column": 8 | 567 | "column": 8 |
529 | }, | 568 | }, |
530 | "end": { | 569 | "end": { |
531 | "line": 178, | 570 | "line": 190, |
532 | "column": 3 | 571 | "column": 3 |
533 | } | 572 | } |
534 | }, | 573 | }, |
@@ -537,11 +576,11 @@ | |||
537 | "defaultMessage": "!!!Hide Others", | 576 | "defaultMessage": "!!!Hide Others", |
538 | "file": "src/lib/Menu.js", | 577 | "file": "src/lib/Menu.js", |
539 | "start": { | 578 | "start": { |
540 | "line": 179, | 579 | "line": 191, |
541 | "column": 14 | 580 | "column": 14 |
542 | }, | 581 | }, |
543 | "end": { | 582 | "end": { |
544 | "line": 182, | 583 | "line": 194, |
545 | "column": 3 | 584 | "column": 3 |
546 | } | 585 | } |
547 | }, | 586 | }, |
@@ -550,11 +589,11 @@ | |||
550 | "defaultMessage": "!!!Unhide", | 589 | "defaultMessage": "!!!Unhide", |
551 | "file": "src/lib/Menu.js", | 590 | "file": "src/lib/Menu.js", |
552 | "start": { | 591 | "start": { |
553 | "line": 183, | 592 | "line": 195, |
554 | "column": 10 | 593 | "column": 10 |
555 | }, | 594 | }, |
556 | "end": { | 595 | "end": { |
557 | "line": 186, | 596 | "line": 198, |
558 | "column": 3 | 597 | "column": 3 |
559 | } | 598 | } |
560 | }, | 599 | }, |
@@ -563,11 +602,11 @@ | |||
563 | "defaultMessage": "!!!Quit", | 602 | "defaultMessage": "!!!Quit", |
564 | "file": "src/lib/Menu.js", | 603 | "file": "src/lib/Menu.js", |
565 | "start": { | 604 | "start": { |
566 | "line": 187, | 605 | "line": 199, |
567 | "column": 8 | 606 | "column": 8 |
568 | }, | 607 | }, |
569 | "end": { | 608 | "end": { |
570 | "line": 190, | 609 | "line": 202, |
571 | "column": 3 | 610 | "column": 3 |
572 | } | 611 | } |
573 | }, | 612 | }, |
@@ -576,11 +615,11 @@ | |||
576 | "defaultMessage": "!!!Add New Service...", | 615 | "defaultMessage": "!!!Add New Service...", |
577 | "file": "src/lib/Menu.js", | 616 | "file": "src/lib/Menu.js", |
578 | "start": { | 617 | "start": { |
579 | "line": 191, | 618 | "line": 203, |
580 | "column": 17 | 619 | "column": 17 |
581 | }, | 620 | }, |
582 | "end": { | 621 | "end": { |
583 | "line": 194, | 622 | "line": 206, |
584 | "column": 3 | 623 | "column": 3 |
585 | } | 624 | } |
586 | }, | 625 | }, |
@@ -589,11 +628,11 @@ | |||
589 | "defaultMessage": "!!!Add New Workspace...", | 628 | "defaultMessage": "!!!Add New Workspace...", |
590 | "file": "src/lib/Menu.js", | 629 | "file": "src/lib/Menu.js", |
591 | "start": { | 630 | "start": { |
592 | "line": 195, | 631 | "line": 207, |
593 | "column": 19 | 632 | "column": 19 |
594 | }, | 633 | }, |
595 | "end": { | 634 | "end": { |
596 | "line": 198, | 635 | "line": 210, |
597 | "column": 3 | 636 | "column": 3 |
598 | } | 637 | } |
599 | }, | 638 | }, |
@@ -602,11 +641,11 @@ | |||
602 | "defaultMessage": "!!!Open workspace drawer", | 641 | "defaultMessage": "!!!Open workspace drawer", |
603 | "file": "src/lib/Menu.js", | 642 | "file": "src/lib/Menu.js", |
604 | "start": { | 643 | "start": { |
605 | "line": 199, | 644 | "line": 211, |
606 | "column": 23 | 645 | "column": 23 |
607 | }, | 646 | }, |
608 | "end": { | 647 | "end": { |
609 | "line": 202, | 648 | "line": 214, |
610 | "column": 3 | 649 | "column": 3 |
611 | } | 650 | } |
612 | }, | 651 | }, |
@@ -615,11 +654,11 @@ | |||
615 | "defaultMessage": "!!!Close workspace drawer", | 654 | "defaultMessage": "!!!Close workspace drawer", |
616 | "file": "src/lib/Menu.js", | 655 | "file": "src/lib/Menu.js", |
617 | "start": { | 656 | "start": { |
618 | "line": 203, | 657 | "line": 215, |
619 | "column": 24 | 658 | "column": 24 |
620 | }, | 659 | }, |
621 | "end": { | 660 | "end": { |
622 | "line": 206, | 661 | "line": 218, |
623 | "column": 3 | 662 | "column": 3 |
624 | } | 663 | } |
625 | }, | 664 | }, |
@@ -628,11 +667,11 @@ | |||
628 | "defaultMessage": "!!!Activate next service...", | 667 | "defaultMessage": "!!!Activate next service...", |
629 | "file": "src/lib/Menu.js", | 668 | "file": "src/lib/Menu.js", |
630 | "start": { | 669 | "start": { |
631 | "line": 207, | 670 | "line": 219, |
632 | "column": 23 | 671 | "column": 23 |
633 | }, | 672 | }, |
634 | "end": { | 673 | "end": { |
635 | "line": 210, | 674 | "line": 222, |
636 | "column": 3 | 675 | "column": 3 |
637 | } | 676 | } |
638 | }, | 677 | }, |
@@ -641,11 +680,11 @@ | |||
641 | "defaultMessage": "!!!Activate previous service...", | 680 | "defaultMessage": "!!!Activate previous service...", |
642 | "file": "src/lib/Menu.js", | 681 | "file": "src/lib/Menu.js", |
643 | "start": { | 682 | "start": { |
644 | "line": 211, | 683 | "line": 223, |
645 | "column": 27 | 684 | "column": 27 |
646 | }, | 685 | }, |
647 | "end": { | 686 | "end": { |
648 | "line": 214, | 687 | "line": 226, |
649 | "column": 3 | 688 | "column": 3 |
650 | } | 689 | } |
651 | }, | 690 | }, |
@@ -654,11 +693,11 @@ | |||
654 | "defaultMessage": "!!!Disable notifications & audio", | 693 | "defaultMessage": "!!!Disable notifications & audio", |
655 | "file": "src/lib/Menu.js", | 694 | "file": "src/lib/Menu.js", |
656 | "start": { | 695 | "start": { |
657 | "line": 215, | 696 | "line": 227, |
658 | "column": 11 | 697 | "column": 11 |
659 | }, | 698 | }, |
660 | "end": { | 699 | "end": { |
661 | "line": 218, | 700 | "line": 230, |
662 | "column": 3 | 701 | "column": 3 |
663 | } | 702 | } |
664 | }, | 703 | }, |
@@ -667,11 +706,11 @@ | |||
667 | "defaultMessage": "!!!Enable notifications & audio", | 706 | "defaultMessage": "!!!Enable notifications & audio", |
668 | "file": "src/lib/Menu.js", | 707 | "file": "src/lib/Menu.js", |
669 | "start": { | 708 | "start": { |
670 | "line": 219, | 709 | "line": 231, |
671 | "column": 13 | 710 | "column": 13 |
672 | }, | 711 | }, |
673 | "end": { | 712 | "end": { |
674 | "line": 222, | 713 | "line": 234, |
675 | "column": 3 | 714 | "column": 3 |
676 | } | 715 | } |
677 | }, | 716 | }, |
@@ -680,11 +719,11 @@ | |||
680 | "defaultMessage": "!!!Workspaces", | 719 | "defaultMessage": "!!!Workspaces", |
681 | "file": "src/lib/Menu.js", | 720 | "file": "src/lib/Menu.js", |
682 | "start": { | 721 | "start": { |
683 | "line": 223, | 722 | "line": 235, |
684 | "column": 14 | 723 | "column": 14 |
685 | }, | 724 | }, |
686 | "end": { | 725 | "end": { |
687 | "line": 226, | 726 | "line": 238, |
688 | "column": 3 | 727 | "column": 3 |
689 | } | 728 | } |
690 | }, | 729 | }, |
@@ -693,11 +732,11 @@ | |||
693 | "defaultMessage": "!!!Default", | 732 | "defaultMessage": "!!!Default", |
694 | "file": "src/lib/Menu.js", | 733 | "file": "src/lib/Menu.js", |
695 | "start": { | 734 | "start": { |
696 | "line": 227, | 735 | "line": 239, |
697 | "column": 20 | 736 | "column": 20 |
698 | }, | 737 | }, |
699 | "end": { | 738 | "end": { |
700 | "line": 230, | 739 | "line": 242, |
701 | "column": 3 | 740 | "column": 3 |
702 | } | 741 | } |
703 | } | 742 | } |
diff --git a/src/lib/Menu.js b/src/lib/Menu.js index e0dfd736e..22d788918 100644 --- a/src/lib/Menu.js +++ b/src/lib/Menu.js | |||
@@ -1,4 +1,4 @@ | |||
1 | import { remote, shell } from 'electron'; | 1 | import { remote, shell, clipboard } from 'electron'; |
2 | import { observable, autorun } from 'mobx'; | 2 | import { observable, autorun } from 'mobx'; |
3 | import { defineMessages } from 'react-intl'; | 3 | import { defineMessages } from 'react-intl'; |
4 | 4 | ||
@@ -128,6 +128,18 @@ const menuItems = defineMessages({ | |||
128 | id: 'menu.help.support', | 128 | id: 'menu.help.support', |
129 | defaultMessage: '!!!Support', | 129 | defaultMessage: '!!!Support', |
130 | }, | 130 | }, |
131 | debugInfo: { | ||
132 | id: 'menu.help.debugInfo', | ||
133 | defaultMessage: '!!!Copy Debug Information', | ||
134 | }, | ||
135 | debugInfoCopiedHeadline: { | ||
136 | id: 'menu.help.debugInfoCopiedHeadline', | ||
137 | defaultMessage: '!!!Franz Debug Information', | ||
138 | }, | ||
139 | debugInfoCopiedBody: { | ||
140 | id: 'menu.help.debugInfoCopiedBody', | ||
141 | defaultMessage: '!!!Your Debug Information has been copied to your clipboard.', | ||
142 | }, | ||
131 | tos: { | 143 | tos: { |
132 | id: 'menu.help.tos', | 144 | id: 'menu.help.tos', |
133 | defaultMessage: '!!!Terms of Service', | 145 | defaultMessage: '!!!Terms of Service', |
@@ -760,6 +772,10 @@ export default class FranzMenu { | |||
760 | tpl[4].submenu = this.workspacesMenu(); | 772 | tpl[4].submenu = this.workspacesMenu(); |
761 | } | 773 | } |
762 | 774 | ||
775 | tpl[tpl.length - 1].submenu.push({ | ||
776 | type: 'separator', | ||
777 | }, this.debugMenu()); | ||
778 | |||
763 | this.currentTemplate = tpl; | 779 | this.currentTemplate = tpl; |
764 | const menu = Menu.buildFromTemplate(tpl); | 780 | const menu = Menu.buildFromTemplate(tpl); |
765 | Menu.setApplicationMenu(menu); | 781 | Menu.setApplicationMenu(menu); |
@@ -870,6 +886,28 @@ export default class FranzMenu { | |||
870 | return menu; | 886 | return menu; |
871 | } | 887 | } |
872 | 888 | ||
889 | debugMenu() { | ||
890 | const { intl } = window.franz; | ||
891 | |||
892 | return { | ||
893 | label: intl.formatMessage(menuItems.debugInfo), | ||
894 | click: () => { | ||
895 | const { debugInfo } = this.stores.app; | ||
896 | |||
897 | clipboard.write({ | ||
898 | text: JSON.stringify(debugInfo), | ||
899 | }); | ||
900 | |||
901 | this.actions.app.notify({ | ||
902 | title: intl.formatMessage(menuItems.debugInfoCopiedHeadline), | ||
903 | options: { | ||
904 | body: intl.formatMessage(menuItems.debugInfoCopiedBody), | ||
905 | }, | ||
906 | }); | ||
907 | }, | ||
908 | }; | ||
909 | } | ||
910 | |||
873 | _getServiceName(service) { | 911 | _getServiceName(service) { |
874 | if (service.name) { | 912 | if (service.name) { |
875 | return service.name; | 913 | return service.name; |
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index bca20a581..2ac306a2a 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js | |||
@@ -8,6 +8,9 @@ import AutoLaunch from 'auto-launch'; | |||
8 | import prettyBytes from 'pretty-bytes'; | 8 | import prettyBytes from 'pretty-bytes'; |
9 | import ms from 'ms'; | 9 | import ms from 'ms'; |
10 | import { URL } from 'url'; | 10 | import { URL } from 'url'; |
11 | import os from 'os'; | ||
12 | import path from 'path'; | ||
13 | import { readJsonSync } from 'fs-extra'; | ||
11 | 14 | ||
12 | import Store from './lib/Store'; | 15 | import Store from './lib/Store'; |
13 | import Request from './lib/Request'; | 16 | import Request from './lib/Request'; |
@@ -23,7 +26,7 @@ import { isValidExternalURL } from '../helpers/url-helpers'; | |||
23 | 26 | ||
24 | const debug = require('debug')('Franz:AppStore'); | 27 | const debug = require('debug')('Franz:AppStore'); |
25 | 28 | ||
26 | const { app, systemPreferences } = remote; | 29 | const { app, systemPreferences, screen } = remote; |
27 | 30 | ||
28 | const mainWindow = remote.getCurrentWindow(); | 31 | const mainWindow = remote.getCurrentWindow(); |
29 | 32 | ||
@@ -182,6 +185,26 @@ export default class AppStore extends Store { | |||
182 | return prettyBytes(this.getAppCacheSizeRequest.execute().result || 0); | 185 | return prettyBytes(this.getAppCacheSizeRequest.execute().result || 0); |
183 | } | 186 | } |
184 | 187 | ||
188 | @computed get debugInfo() { | ||
189 | return { | ||
190 | host: { | ||
191 | platform: process.platform, | ||
192 | release: os.release(), | ||
193 | screens: screen.getAllDisplays(), | ||
194 | }, | ||
195 | franz: { | ||
196 | version: app.getVersion(), | ||
197 | electron: process.versions.electron, | ||
198 | installedRecipes: this.stores.recipes.all.map(recipe => ({ id: recipe.id, version: recipe.version })), | ||
199 | devRecipes: this.stores.recipePreviews.dev.map(recipe => ({ id: recipe.id, version: recipe.version })), | ||
200 | services: this.stores.services.all.map(service => ({ id: service.id, recipe: service.recipe.id })), | ||
201 | workspaces: this.stores.workspaces.workspaces.map(workspace => ({ id: workspace.id, services: workspace.services })), | ||
202 | windowSettings: readJsonSync(path.join(app.getPath('userData'), 'window-state.json')), | ||
203 | user: this.stores.user.data.id, | ||
204 | }, | ||
205 | }; | ||
206 | } | ||
207 | |||
185 | // Actions | 208 | // Actions |
186 | @action _notify({ | 209 | @action _notify({ |
187 | title, options, notificationId, serviceId = null, | 210 | title, options, notificationId, serviceId = null, |