24
1
Fork 0

Merge pull request #1099 from mozilla/android-implement-share-card

Fix #888 Implement share card.
This commit is contained in:
Danny Coates 2019-01-16 13:26:41 -08:00 committed by GitHub
commit a6a8fa6528
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 50 additions and 7 deletions

View File

@ -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()

View File

@ -1,7 +1,16 @@
/* global Android */
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) {
@ -140,6 +149,26 @@ function archiveDetails(translate, archive) {
}
module.exports = function(state, emit, archive) {
const copyOrShare =
browserName() !== 'android-app'
? html`
<button
class="text-blue hover:text-blue-dark focus:text-blue-darker self-end font-medium flex items-center"
onclick=${copy}
>
<img src="${assets.get('copy-16.svg')}" class="mr-2" /> ${
state.translate('copyUrlHover')
}
</button>
`
: html`
<button
class="text-blue hover:text-blue-dark focus:text-blue-darker self-end font-medium flex items-center"
onclick=${share}
>
<img src="${assets.get('share-16.svg')}" class="mr-2" /> Share
</button>
`;
return html`
<send-archive
id="archive-${archive.id}"
@ -162,12 +191,7 @@ module.exports = function(state, emit, archive) {
</div>
${archiveDetails(state.translate, archive)}
<hr class="w-full border-t my-4">
<button
class="text-blue hover:text-blue-dark focus:text-blue-darker self-end font-medium flex items-center"
onclick=${copy}>
<img src="${assets.get('copy-16.svg')}" class="mr-2"/>
${state.translate('copyUrlHover')}
</button>
${copyOrShare}
</send-archive>`;
function copy(event) {
@ -185,6 +209,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) {

1
assets/share-16.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill="#0A8DFF" d="M14.707 8.293l-3-3A1 1 0 0 0 11 5h-1V4a1 1 0 0 0-.293-.707l-3-3A1 1 0 0 0 6 0H3a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h3v3a2 2 0 0 0 2 2h5a2 2 0 0 0 2-2V9a1 1 0 0 0-.293-.707zM12.586 9H11V7.414zm-5-5H6V2.414zM6 7v2H3V2h2v2.5a.5.5 0 0 0 .5.5H8a2 2 0 0 0-2 2zm2 7V7h2v2.5a.5.5 0 0 0 .5.5H13v4z"/></svg>

After

Width:  |  Height:  |  Size: 398 B