| // Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| @JS() |
| library; |
| |
| // TODO: https://github.com/dart-lang/webdev/issues/2508 |
| // ignore: deprecated_member_use |
| import 'dart:html'; |
| |
| // TODO: https://github.com/dart-lang/webdev/issues/2508 |
| // ignore: deprecated_member_use |
| import 'package:js/js.dart'; |
| |
| import 'chrome_api.dart'; |
| import 'messaging.dart'; |
| |
| void main() { |
| _registerListeners(); |
| } |
| |
| void _registerListeners() { |
| chrome.runtime.onMessage.addListener(allowInterop(_handleRuntimeMessages)); |
| } |
| |
| void _handleRuntimeMessages( |
| dynamic jsRequest, |
| MessageSender sender, |
| Function sendResponse, |
| ) { |
| interceptMessage<String>( |
| message: jsRequest, |
| expectedType: MessageType.appId, |
| expectedSender: Script.background, |
| expectedRecipient: Script.copier, |
| sender: sender, |
| messageHandler: _copyAppId, |
| ); |
| |
| sendResponse(defaultResponse); |
| } |
| |
| void _copyAppId(String appId) { |
| final clipboard = window.navigator.clipboard; |
| if (clipboard == null) return; |
| clipboard.writeText(appId); |
| _notifyCopiedSuccess(appId); |
| } |
| |
| Future<bool> _notifyCopiedSuccess(String appId) => sendRuntimeMessage( |
| type: MessageType.appId, |
| body: appId, |
| sender: Script.copier, |
| recipient: Script.background, |
| ); |