From af61434b727327219213f10d28a1d030d94fcc15 Mon Sep 17 00:00:00 2001 From: Donovan Preston Date: Wed, 16 Jan 2019 12:05:39 -0500 Subject: [PATCH 1/2] Fix #888 Implement share card. --- .../org/mozilla/sendandroid/MainActivity.kt | 13 +++++++ app/ui/archiveTile.js | 34 +++++++++++++++---- assets/share-16.svg | 1 + 3 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 assets/share-16.svg diff --git a/android/app/src/main/java/org/mozilla/sendandroid/MainActivity.kt b/android/app/src/main/java/org/mozilla/sendandroid/MainActivity.kt index e0a5730e..2d953c00 100644 --- a/android/app/src/main/java/org/mozilla/sendandroid/MainActivity.kt +++ b/android/app/src/main/java/org/mozilla/sendandroid/MainActivity.kt @@ -35,6 +35,11 @@ class WebAppInterface(private val mContext: MainActivity) { fun beginOAuthFlow() { mContext.beginOAuthFlow(); } + + @JavascriptInterface + fun shareUrl(url: String) { + mContext.shareUrl(url) + } } class MainActivity : AppCompatActivity(), AdvancedWebView.Listener { @@ -94,6 +99,14 @@ class MainActivity : AppCompatActivity(), AdvancedWebView.Listener { }) } + fun shareUrl(url: String) { + val shareIntent = Intent() + shareIntent.action = Intent.ACTION_SEND + shareIntent.type = "text/plain" + shareIntent.putExtra(Intent.EXTRA_TEXT, url); + startActivity(Intent.createChooser(shareIntent, "")) + } + @SuppressLint("NewApi") override fun onResume() { super.onResume() diff --git a/app/ui/archiveTile.js b/app/ui/archiveTile.js index 09e25d0a..ee0c0800 100644 --- a/app/ui/archiveTile.js +++ b/app/ui/archiveTile.js @@ -1,3 +1,5 @@ +/* global Android */ + const html = require('choo/html'); const raw = require('choo/html/raw'); const assets = require('../../common/assets'); @@ -140,6 +142,26 @@ function archiveDetails(translate, archive) { } module.exports = function(state, emit, archive) { + const copyOrShare = + typeof window.Android !== 'object' + ? html` + + ` + : html` + + `; return html` ${archiveDetails(state.translate, archive)}
- + ${copyOrShare}
`; function copy(event) { @@ -185,6 +202,11 @@ module.exports = function(state, emit, archive) { event.stopPropagation(); emit('delete', { file: archive, location: 'success-screen' }); } + + function share(event) { + event.stopPropagation(); + Android.shareUrl(archive.url); + } }; module.exports.wip = function(state, emit) { diff --git a/assets/share-16.svg b/assets/share-16.svg new file mode 100644 index 00000000..507f199f --- /dev/null +++ b/assets/share-16.svg @@ -0,0 +1 @@ + \ No newline at end of file From c90d811087e19a8455a4fcc080a80eb255b35f1a Mon Sep 17 00:00:00 2001 From: Donovan Preston Date: Wed, 16 Jan 2019 16:20:15 -0500 Subject: [PATCH 2/2] Switch to using utils.browserName --- app/ui/archiveTile.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/ui/archiveTile.js b/app/ui/archiveTile.js index ee0c0800..2da3aaa7 100644 --- a/app/ui/archiveTile.js +++ b/app/ui/archiveTile.js @@ -3,7 +3,14 @@ const html = require('choo/html'); const raw = require('choo/html/raw'); const assets = require('../../common/assets'); -const { bytes, copyToClipboard, list, percent, timeLeft } = require('../utils'); +const { + browserName, + bytes, + copyToClipboard, + list, + percent, + timeLeft +} = require('../utils'); const expiryOptions = require('./expiryOptions'); function expiryInfo(translate, archive) { @@ -143,7 +150,7 @@ function archiveDetails(translate, archive) { module.exports = function(state, emit, archive) { const copyOrShare = - typeof window.Android !== 'object' + browserName() !== 'android-app' ? html`