ソースを参照

Add basic ShareTarget handler

RobinLinus 6 年 前
コミット
13243093ae
3 ファイル変更32 行追加3 行削除
  1. 10 2
      client/manifest.json
  2. 21 0
      client/scripts/ui.js
  3. 1 1
      client/service-worker.js

+ 10 - 2
client/manifest.json

@@ -18,12 +18,20 @@
         "sizes": "192x192",
         "type": "image/png"
     },{
-        "src": "images/logo_transparent_white_512x512.png",
+        "src": "images/logo_transparent_512x512.png",
         "sizes": "512x512",
         "type": "image/png"
     }],
     "background_color": "#3367d6",
     "start_url": "/",
     "display": "minimal-ui",
-    "theme_color": "#3367d6"
+    "theme_color": "#3367d6",
+    "share_target": {
+        "action": "/share-target/",
+        "params": {
+            "title": "title",
+            "text": "text",
+            "url": "url"
+        }
+    }
 }

+ 21 - 0
client/scripts/ui.js

@@ -276,10 +276,17 @@ class SendTextDialog extends Dialog {
 
     _onRecipient(recipient) {
         this._recipient = recipient;
+        this._handleShareTargetText();
         this.show();
         this.$text.setSelectionRange(0, this.$text.value.length)
     }
 
+    _handleShareTargetText(){
+        if(!window.shareTargetText) return;
+        this.$text.value = window.shareTargetText;
+        window.shareTargetText = '';
+    }
+
     _send(e) {
         e.preventDefault();
         Events.fire('send-text', {
@@ -439,6 +446,20 @@ class NetworkStatusUI {
     }
 }
 
+class WebShareTargetUI {
+    constructor() {
+        const parsedUrl = new URL(window.location);
+        const title = parsedUrl.searchParams.get('title');
+        const text = parsedUrl.searchParams.get('text');
+        const url = parsedUrl.searchParams.get('url');
+
+        let shareTargetText = title ? title : '';
+        shareTargetText += text ? shareTargetText ? ' ' + text : text : '';
+        shareTargetText += url ? shareTargetText ? ' ' + url : url : '';
+        window.shareTargetText = shareTargetText;
+        console.log('Shared Target Text:', '"' + shareTargetText + '"');
+    }
+}
 
 
 class Snapdrop {

+ 1 - 1
client/service-worker.js

@@ -1,4 +1,4 @@
-var CACHE_NAME = 'snapdrop-cache-v1.02';
+var CACHE_NAME = 'snapdrop-cache-v1.03';
 var urlsToCache = [
   '/',
   '/styles.css',