diff --git a/_locales/de/messages.json b/_locales/de/messages.json index b462e9c8..a4baf094 100644 --- a/_locales/de/messages.json +++ b/_locales/de/messages.json @@ -82,10 +82,10 @@ "message": "Bist du sicher, dass du Folgendes löschen möchtest?\n\n" }, "Unknown": { - "message": "Deine Segmente konnte nicht gesendet werden, bitte versuche es später erneut." + "message": "Deine Segmente konnten nicht gesendet werden, bitte versuche es später erneut." }, "sponsorFound": { - "message": "Die gesponsorten Inhalte dieses Videos befindet sich bereits in der Datenbank!" + "message": "Die gesponsorten Inhalte dieses Videos befinden sich bereits in der Datenbank!" }, "sponsor404": { "message": "Keine Sponsoren gefunden" @@ -214,10 +214,10 @@ "message": "Dieser Knopf entfernt sämtlich Segmente in der Youtube-Zeitleiste." }, "disableViewTracking": { - "message": "Deaktiviere mitzählen übersprungener Sponsoren" + "message": "Deaktiviere das Mitzählen übersprungener Sponsoren" }, "enableViewTracking": { - "message": "Aktiviere mitzählen übersprungener Sponsoren" + "message": "Aktiviere das Mitzählen übersprungener Sponsoren" }, "whatViewTracking": { "message": "Diese Funktion hält fest, welche Sponsoren von dir übersprungen wurden und hilft anderen zu erfahren, was ihre Einsendungen bewirkt haben.\n Außerdem dienen die Werte zusammen mit positiven Rückmeldungen als Anti-Spam-Schutz. \n Wenn ein gesponsorter Inhalt übersprungen wird, sendet die Erweiterung eine Nachricht an den Server. \n Hoffentlich wird diese Funktion auch weiterhin genutzt, damit der Algorithmus funktioniert. :)" @@ -292,10 +292,10 @@ "message": "Auto-Überspringen überspringt gesponsorte Inhalte für dich. Wenn deaktiviert, fragt die Benachrichtigung, ob übersprungen werden soll." }, "youHaveSkipped": { - "message": "Du hast übersprungen " + "message": "Du übersprangst " }, "youHaveSaved": { - "message": "Du hast dir erspart " + "message": "Du erspartest dir " }, "minLower": { "message": "Minute" diff --git a/_locales/en/messages.json b/_locales/en/messages.json index c0cb80bf..d5684bb0 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -320,5 +320,17 @@ }, "statusReminder": { "message": "Check status.sponsor.ajay.app for server status." + }, + "changeUserID": { + "message": "Import/Export Your UserID" + }, + "whatChangeUserID": { + "message": "This should be kept private. This is like a password and should not be shared with anyone. If someone has this, they can impersonate you." + }, + "setUserID": { + "message": "Set UserID" + }, + "userIDChangeWarning": { + "message": "Warning: Changing the UserID is permanent. Are you sure you would like to do this? Make sure to backup your old one just in case." } } diff --git a/background.js b/background.js index ae1f7e45..f2759f1f 100644 --- a/background.js +++ b/background.js @@ -109,7 +109,7 @@ function submitVote(type, UUID, callback) { } //publish this vote - sendRequestToServer("GET", "/api/voteOnSponsorTime?UUID=" + UUID + "&userID=" + userID + "&type=" + type, function(xmlhttp, error) { + sendRequestToServer("POST", "/api/voteOnSponsorTime?UUID=" + UUID + "&userID=" + userID + "&type=" + type, function(xmlhttp, error) { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { callback({ successType: 1 diff --git a/content.js b/content.js index 1e6441f6..dcca722b 100644 --- a/content.js +++ b/content.js @@ -514,12 +514,11 @@ function updatePreviewBar() { function getChannelID() { //get channel id - let channelNameContainer = document.getElementById("channel-name"); - let channelURLContainer = null; - if (channelNameContainer !== null) { - channelURLContainer = channelNameContainer.querySelector("#container").querySelector("#text-container").querySelector("#text").firstElementChild; + channelURLContainer = document.querySelector("#channel-name > #container > #text-container > #text"); + if (channelURLContainer !== null) { + channelURLContainer = channelURLContainer.firstElementChild; } else if (onInvidious) { // Unfortunately, the Invidious HTML doesn't have much in the way of element identifiers... channelContainers = document.querySelector("body > div > div.pure-u-1.pure-u-md-20-24 div.pure-u-1.pure-u-lg-3-5 > div > a"); @@ -677,9 +676,9 @@ function skipToTime(v, index, sponsorTimes, openNotice) { } } - //send telemetry that a this sponsor was skipped happened + //send telemetry that a this sponsor was skipped if (trackViewCount && !sponsorSkipped[index]) { - sendRequestToServer("GET", "/api/viewedVideoSponsorTime?UUID=" + currentUUID); + sendRequestToServer("POST", "/api/viewedVideoSponsorTime?UUID=" + currentUUID); if (!disableAutoSkip) { // Count this as a skip @@ -973,11 +972,13 @@ function vote(type, UUID, skipNotice) { let sponsorIndex = UUIDs.indexOf(UUID); - // See if the local time saved count and skip count should be reverted + // See if the local time saved count and skip count should be saved if (type == 0 && sponsorSkipped[sponsorIndex] || type == 1 && !sponsorSkipped[sponsorIndex]) { let factor = 1; if (type == 0) { factor = -1; + + sponsorSkipped[sponsorIndex] = false; } // Count this as a skip @@ -991,8 +992,6 @@ function vote(type, UUID, skipNotice) { chrome.storage.sync.set({"skipCount": result.skipCount + factor * 1 }); }); - - sponsorSkipped[sponsorIndex] = !sponsorSkipped[sponsorIndex]; } chrome.runtime.sendMessage({ diff --git a/crowdin.yml b/crowdin.yml new file mode 100644 index 00000000..c0a72a88 --- /dev/null +++ b/crowdin.yml @@ -0,0 +1,9 @@ +files: + - source: /_locales/en/* + translation: /_locales/%two_letters_code%/%original_file_name% + languages_mapping: + two_letters_code: + pr-BR: "pt_BR" + pr-PT: "pt_PT" + zh-CN: "zh_CH" + zh-TW: "zh_TW" diff --git a/manifest.json b/manifest.json index eb84da3e..99f48a5f 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "name": "__MSG_fullName__", "short_name": "__MSG_Name__", - "version": "1.2.0", + "version": "1.2.2", "default_locale": "en", "description": "__MSG_Description__", "content_scripts": [ diff --git a/popup.html b/popup.html index a9130680..dffd393d 100644 --- a/popup.html +++ b/popup.html @@ -253,6 +253,28 @@

+ + +
+ + __MSG_whatChangeUserID__ + + + + +
+
+
diff --git a/popup.js b/popup.js index 713863e5..af4d3f26 100644 --- a/popup.js +++ b/popup.js @@ -82,6 +82,11 @@ function runThePopup() { "setUsername", "usernameInput", "submitUsername", + // UserID + "changeUserID", + "changeUserIDButton", + "userIDInput", + "setUserID", // More "submissionSection", "mainControls", @@ -118,6 +123,8 @@ function runThePopup() { SB.enableSponsorViewTracking.addEventListener("click", enableSponsorViewTracking); SB.setUsernameButton.addEventListener("click", setUsernameButton); SB.submitUsername.addEventListener("click", submitUsername); + SB.changeUserIDButton.addEventListener("click", changeUserIDButton); + SB.setUserID.addEventListener("click", setUserID); SB.optionsButton.addEventListener("click", openOptions); SB.reportAnIssue.addEventListener("click", reportAnIssue); SB.hideDiscordButton.addEventListener("click", hideDiscordButton); @@ -740,8 +747,8 @@ function runThePopup() { tabs[0].id, {message: "getCurrentTime"}, function (response) { - let minutes = document.getElementById(idStartName + chrome.i18n.getMessage("Mins") + index); - let seconds = document.getElementById(idStartName + chrome.i18n.getMessage("Secs") + index); + let minutes = document.getElementById(idStartName + "Minutes" + index); + let seconds = document.getElementById(idStartName + "Seconds" + index); minutes.value = getTimeInMinutes(response.currentTime); seconds.value = getTimeInFormattedSeconds(response.currentTime); @@ -752,8 +759,8 @@ function runThePopup() { //id start name is whether it is the startTime or endTime //gives back the time in seconds function getSponsorTimeEditTimes(idStartName, index) { - let minutes = document.getElementById(idStartName + chrome.i18n.getMessage("Mins") + index); - let seconds = document.getElementById(idStartName + chrome.i18n.getMessage("Secs") + index); + let minutes = document.getElementById(idStartName + "Minutes" + index); + let seconds = document.getElementById(idStartName + "Seconds" + index); return parseInt(minutes.value) * 60 + parseFloat(seconds.value); } @@ -1158,6 +1165,22 @@ function runThePopup() { SB.setUsernameContainer.style.display = "none"; SB.setUsername.style.display = "unset"; } + + function changeUserIDButton() { + //get the user ID + chrome.storage.sync.get(["userID"], function(result) { + SB.userIDInput.value = result.userID; + SB.setUserID.style.display = "unset"; + SB.userIDInput.style.display = "unset"; + SB.changeUserID.style.display = "unset"; + }); + } + + function setUserID() { + if (!confirm(chrome.i18n.getMessage("userIDChangeWarning"))) return; + + chrome.storage.sync.set({"userID": SB.userIDInput.value}); + } //this is not a YouTube video page function displayNoVideo() {