Updated About delegate of MacOS RustDesk (markdown)

RustDesk
2024-03-27 15:09:14 +08:00
parent 59842ef0ee
commit 8cf1cd4eba

@@ -1,8 +1,8 @@
We have two most important delegate events, one is url schema via browser, another one is launchpad click. We have two most important delegate events, one is url schema via browser, another one is launchpad click.
When `--server` is running, the delegate events will be captured by `--server` background process, the delegate listeners are registered in tao crate https://github.com/rustdesk-org/tao/blob/1cad16b200485bbccc67dcee2d339eac6e1c16ad/src/platform_impl/macos/app_delegate.rs. It also may be captured by `--service` which caused launchpad click failure, here is a fix for this, https://github.com/rustdesk/rustdesk/discussions/5631#discussioncomment-8916223. When `--server` is running, the delegate events will be captured by `--server` background process, the delegate listeners are registered in [tao crate](https://github.com/rustdesk-org/tao/blob/1cad16b200485bbccc67dcee2d339eac6e1c16ad/src/platform_impl/macos/app_delegate.rs). It also may be captured by `--service` which caused launchpad click failure, here is a fix for this, https://github.com/rustdesk/rustdesk/discussions/5631#discussioncomment-8916223.
When `--server` receives the delegate, it will check if there is RustDesk window. When `--server` receives the delegate, it will check if there is RustDesk window.
- If there is, `--server` will send url schema to the RustDesk windows - If there is, `--server` will send url schema to the RustDesk windows
- If there is not, `--server` will run command `rustdesk <url-schema>` - If there is not, `--server` will run command `rustdesk <url-schema>`
When `--server` is not running, the delegate events will be sent to RustDesk window directly, the openURL delegate listen is registered in uni_links_desktop, the url schema will be propogated to dart via uni_links_desktop. launchpad click delegate event listener is registered here, https://github.com/rustdesk/rustdesk/blob/6e689400b69f0276a68e9eff531737c25b09c64e/flutter/macos/Runner/AppDelegate.swift#L15. When `--server` is not running, the delegate events will be sent to RustDesk window directly, the openURL delegate listen is registered in uni_links_desktop, the url schema will be propogated to dart via uni_links_desktop. launchpad click delegate event listener is registered [here](https://github.com/rustdesk/rustdesk/blob/6e689400b69f0276a68e9eff531737c25b09c64e/flutter/macos/Runner/AppDelegate.swift#L15).