diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index 0086358d..3ba13e0c 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -1 +1 @@
-blank_issues_enabled: true
+blank_issues_enabled: false
diff --git a/README.md b/README.md
index e241f55c..40203292 100644
--- a/README.md
+++ b/README.md
@@ -35,7 +35,6 @@ By using Piped, you can freely watch and listen to content without the fear of p
- [x] No connections to Google's servers
- [x] Playing just audio
- [x] PWA support
-- [x] Support for iOS
- [x] Locally saved Preferences
- [x] [Available in many languages](src/locales), thanks to [our translators](https://hosted.weblate.org/projects/piped/frontend/)
- [x] Embedded video support
diff --git a/package.json b/package.json
index fe6ced18..f468c306 100644
--- a/package.json
+++ b/package.json
@@ -15,7 +15,7 @@
"@fortawesome/vue-fontawesome": "^3.0.1",
"buffer": "^6.0.3",
"dompurify": "^2.4.0",
- "hotkeys-js": "^3.9.5",
+ "hotkeys-js": "^3.10.0",
"javascript-time-ago": "^2.5.7",
"mux.js": "^6.2.0",
"shaka-player": "4.2.1",
@@ -44,7 +44,7 @@
"unocss": "^0.45.18",
"vite": "^2.9.14",
"vite-plugin-eslint": "^1.8.1",
- "vite-plugin-pwa": "^0.12.6"
+ "vite-plugin-pwa": "^0.12.7"
},
"eslintConfig": {
"root": true,
diff --git a/src/components/ChannelPage.vue b/src/components/ChannelPage.vue
index 3c5ef335..89d60730 100644
--- a/src/components/ChannelPage.vue
+++ b/src/components/ChannelPage.vue
@@ -22,6 +22,19 @@
}"
>
+
+
+
+
+
diff --git a/src/components/ModalComponent.vue b/src/components/ModalComponent.vue
index f1b22b7d..90f11d4e 100644
--- a/src/components/ModalComponent.vue
+++ b/src/components/ModalComponent.vue
@@ -1,7 +1,8 @@
-
+
@@ -23,6 +24,10 @@ export default {
} else return;
event.preventDefault();
},
+ handleClick(event) {
+ if (event.target !== event.currentTarget) return;
+ this.$emit("close");
+ },
},
};
@@ -37,6 +42,10 @@ export default {
}
.modal-container {
- @apply w-min m-auto min-w-[20vw];
+ @apply w-min m-auto min-w-[20vw] relative;
+}
+
+.modal-container > button {
+ @apply absolute right-50 top-30;
}
diff --git a/src/components/PlaylistAddModal.vue b/src/components/PlaylistAddModal.vue
index aefc5978..3e3a4aac 100644
--- a/src/components/PlaylistAddModal.vue
+++ b/src/components/PlaylistAddModal.vue
@@ -1,9 +1,6 @@
-
-
-
-
+
diff --git a/src/components/PlaylistsPage.vue b/src/components/PlaylistsPage.vue
index 3b048a64..ccfb7d58 100644
--- a/src/components/PlaylistsPage.vue
+++ b/src/components/PlaylistsPage.vue
@@ -16,7 +16,8 @@
v-text="playlist.name"
/>
-
+
+
@@ -46,6 +47,31 @@ export default {
this.playlists = json;
});
},
+ renamePlaylist(id) {
+ const newName = prompt(this.$t("actions.new_playlist_name"));
+ if (!newName) return;
+ this.fetchJson(this.authApiUrl() + "/user/playlists/rename", null, {
+ method: "POST",
+ body: JSON.stringify({
+ playlistId: id,
+ newName: newName,
+ }),
+ headers: {
+ Authorization: this.getAuthToken(),
+ "Content-Type": "application/json",
+ },
+ }).then(json => {
+ if (json.error) alert(json.error);
+ else {
+ this.playlists.forEach((playlist, index) => {
+ if (playlist.id == id) {
+ this.playlists[index].name = newName;
+ return;
+ }
+ });
+ }
+ });
+ },
deletePlaylist(id) {
if (confirm(this.$t("actions.delete_playlist_confirm")))
this.fetchJson(this.authApiUrl() + "/user/playlists/delete", null, {
diff --git a/src/components/ShareModal.vue b/src/components/ShareModal.vue
index 6c0c5db8..7955b4f3 100644
--- a/src/components/ShareModal.vue
+++ b/src/components/ShareModal.vue
@@ -1,9 +1,6 @@
-
-
-
-
+
@@ -16,7 +13,7 @@
-
+
diff --git a/src/locales/en.json b/src/locales/en.json
index a19da2ab..492a87f1 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -98,6 +98,8 @@
"backup_preferences": "Backup preferences",
"restore_preferences": "Restore preferences",
"back_to_home": "Back to home",
+ "rename_playlist": "Rename playlist",
+ "new_playlist_name": "New playlist name",
"share": "Share",
"with_timecode": "Share with time code",
"piped_link": "Piped link",
diff --git a/yarn.lock b/yarn.lock
index 51301507..baa57156 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2599,10 +2599,10 @@ has@^1.0.3:
dependencies:
function-bind "^1.1.1"
-hotkeys-js@^3.9.5:
- version "3.9.5"
- resolved "https://registry.yarnpkg.com/hotkeys-js/-/hotkeys-js-3.9.5.tgz#8314d0522bf2601e36003213047e9dc7d56d19fe"
- integrity sha512-T0G8CUZ6Q1IOgPnLK1hDXR8DqgKF/VWEsHvZgi6CM7Ub9oOAzvWuJ3Qhc/9nFQaR26MfFOZSwULHrtCnsUX7zA==
+hotkeys-js@^3.10.0:
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/hotkeys-js/-/hotkeys-js-3.10.0.tgz#2bbd13de4aa002fa916c34e3859239924311e35a"
+ integrity sha512-20xeVdOqcgTkMox0+BqFwADZP7+5dy/9CFPpAinSMh2d0s3b0Hs2V2D+lMh4Hphkf7VE9pwnOl58eP1te+REcg==
human-signals@^2.1.0:
version "2.1.0"
@@ -3826,10 +3826,10 @@ vite-plugin-eslint@^1.8.1:
"@types/eslint" "^8.4.5"
rollup "^2.77.2"
-vite-plugin-pwa@^0.12.6:
- version "0.12.6"
- resolved "https://registry.yarnpkg.com/vite-plugin-pwa/-/vite-plugin-pwa-0.12.6.tgz#89d3dc3841337b14ac5f90847fb19735b8ca7d7a"
- integrity sha512-qRxx1zUlwKq2QD20nDZVL449wV+dflRVeDMLa2k4LZiHfWRfHWwmdhnDZOlMEgni0Zss1DkhyTmuzLYuO6aO3A==
+vite-plugin-pwa@^0.12.7:
+ version "0.12.7"
+ resolved "https://registry.yarnpkg.com/vite-plugin-pwa/-/vite-plugin-pwa-0.12.7.tgz#ff4de762926809c56aca43aad8b49a4c6727230e"
+ integrity sha512-salSwS1wWc1niNWfhX2W6gtfXmk+XESMz62w95EHLq6fSM2bDgDm1APmvq1nkDcxH6Onky7HxysCBKMzvOHXYg==
dependencies:
debug "^4.3.4"
fast-glob "^3.2.11"