diff --git a/template/templates/views/entry.html b/template/templates/views/entry.html
index ebcad3ea..8b55e17d 100644
--- a/template/templates/views/entry.html
+++ b/template/templates/views/entry.html
@@ -49,6 +49,7 @@
{{ icon "share" }}{{ t "entry.shared_entry.label" }}
@@ -64,6 +65,7 @@
{{ icon "share" }}{{ t "entry.share.label" }}
{{ end }}
diff --git a/ui/static/js/app.js b/ui/static/js/app.js
index e75c2ddf..9ef95730 100644
--- a/ui/static/js/app.js
+++ b/ui/static/js/app.js
@@ -221,9 +221,9 @@ function updateEntriesStatus(entryIDs, status, callback) {
request.withBody({entry_ids: entryIDs, status: status});
request.withCallback((resp) => {
resp.json().then(count => {
- if (callback) {
- callback(resp);
- }
+ if (callback) {
+ callback(resp);
+ }
if (status === "read") {
decrementUnreadCounter(count);
@@ -336,7 +336,7 @@ function handleFetchOriginalContent() {
response.json().then((data) => {
if (data.hasOwnProperty("content") && data.hasOwnProperty("reading_time")) {
document.querySelector(".entry-content").innerHTML = data.content;
- document.querySelector(".entry-reading-time").innerHTML = data.reading_time;
+ document.querySelector(".entry-reading-time").innerHTML = data.reading_time;
}
});
});
@@ -557,7 +557,7 @@ function handleConfirmationMessage(linkElement, callback) {
}
linkElement.style.display = "none";
-
+
let containerElement = linkElement.parentNode;
let questionElement = document.createElement("span");
@@ -638,3 +638,43 @@ function handlePlayerProgressionSave(playerElement) {
request.execute();
}
}
+
+/**
+ * handle new share entires and already shared entries
+ */
+function handleShare() {
+ let link = document.querySelector('a[data-share-status]');
+ let title = document.querySelector("body > main > section > header > h1 > a");
+ if (link.dataset.shareStatus === "shared") {
+ checkShareAPI(title, link.href);
+ }
+ if (link.dataset.shareStatus === "share") {
+ let request = new RequestBuilder(link.href);
+ request.withCallback((r) => {
+ checkShareAPI(title, r.url);
+ });
+ request.withHttpMethod("GET");
+ request.execute();
+ }
+}
+
+/**
+* wrapper for Web Share API
+*/
+function checkShareAPI(title, url) {
+ if (!navigator.canShare) {
+ console.error("Your browser doesn't support the Web Share API.");
+ window.location = url;
+ return;
+ }
+ try {
+ navigator.share({
+ title: title,
+ url: url
+ });
+ window.location.reload();
+ } catch (err) {
+ console.error(err);
+ window.location.reload();
+ }
+}
\ No newline at end of file
diff --git a/ui/static/js/bootstrap.js b/ui/static/js/bootstrap.js
index be68225b..6cba7089 100644
--- a/ui/static/js/bootstrap.js
+++ b/ui/static/js/bootstrap.js
@@ -52,6 +52,7 @@ document.addEventListener("DOMContentLoaded", function () {
onClick("a[data-toggle-bookmark]", (event) => handleBookmark(event.target));
onClick("a[data-fetch-content-entry]", () => handleFetchOriginalContent());
onClick("a[data-action=search]", (event) => setFocusToSearchInput(event));
+ onClick("a[data-share-status]", () => handleShare());
onClick("a[data-action=markPageAsRead]", (event) => handleConfirmationMessage(event.target, () => markPageAsRead()));
onClick("a[data-toggle-status]", (event) => handleEntryStatus("next", event.target));