Compare commits

...

5 Commits
4.5 ... 4.5.1

Author SHA1 Message Date
Ajay Ramachandran
e480e032f2 bump version 2022-06-05 00:09:21 -04:00
Ajay Ramachandran
995001bd91 New Crowdin updates (#1342) 2022-06-05 00:09:14 -04:00
Ajay
466152ed42 Fix popup copy to clipboard 2022-06-04 01:56:00 -04:00
Ajay
e4855f7427 Fix messed up margin on popup 2022-06-04 01:50:19 -04:00
Ajay
258abd5deb Fix jest errors not displaying in console 2022-06-03 15:12:35 -04:00
9 changed files with 105 additions and 8 deletions

View File

@@ -5,5 +5,5 @@ module.exports = {
"transform": { "transform": {
"^.+\\.ts$": "ts-jest" "^.+\\.ts$": "ts-jest"
}, },
"reporters": ["github-actions"] "reporters": ["default", "github-actions"]
}; };

View File

@@ -1,7 +1,7 @@
{ {
"name": "__MSG_fullName__", "name": "__MSG_fullName__",
"short_name": "SponsorBlock", "short_name": "SponsorBlock",
"version": "4.5", "version": "4.5.1",
"default_locale": "en", "default_locale": "en",
"description": "__MSG_Description__", "description": "__MSG_Description__",
"homepage_url": "https://sponsor.ajay.app", "homepage_url": "https://sponsor.ajay.app",

View File

@@ -239,6 +239,9 @@
"showSkipNotice": { "showSkipNotice": {
"message": "Mostrar aviso después de que se omita un segmento" "message": "Mostrar aviso después de que se omita un segmento"
}, },
"showCategoryGuidelines": {
"message": "Mostrar Ayuda de la Categoría"
},
"noticeVisibilityMode0": { "noticeVisibilityMode0": {
"message": "Avisos de Omisión de Tamaño Completo" "message": "Avisos de Omisión de Tamaño Completo"
}, },
@@ -542,11 +545,20 @@
"message": "a", "message": "a",
"description": "Used between segments. Example: 1:20 to 1:30" "description": "Used between segments. Example: 1:20 to 1:30"
}, },
"generic_guideline2": {
"message": "Se reproduce como si no se hubiera omitido nada"
},
"category_sponsor": { "category_sponsor": {
"message": "Sponsor" "message": "Sponsor"
}, },
"category_sponsor_description": { "category_sponsor_description": {
"message": "Promoción pagada, recomendaciones pagadas y anuncios directos. No para promoción propia o anuncios gratuitos a causas/creadores/sitios web/productos que les gusten." "message": "Promoción pagada, recomendaciones pagadas y anuncios directos. No para promoción propia o agradecimientos gratuitos a causas/creadores/sitios web/productos que les gusten."
},
"category_sponsor_guideline1": {
"message": "Promociones pagadas"
},
"category_sponsor_guideline2": {
"message": "No para donaciones o mercancía personalizada"
}, },
"category_selfpromo": { "category_selfpromo": {
"message": "Promoción Propia/No Remunerada" "message": "Promoción Propia/No Remunerada"
@@ -554,6 +566,12 @@
"category_selfpromo_description": { "category_selfpromo_description": {
"message": "Similar a \"sponsor\", excepto que para la promoción propia o no remunerada. Esto incluye secciones sobre mercancía, donaciones o información sobre con quiénes colaboraron." "message": "Similar a \"sponsor\", excepto que para la promoción propia o no remunerada. Esto incluye secciones sobre mercancía, donaciones o información sobre con quiénes colaboraron."
}, },
"category_selfpromo_guideline1": {
"message": "Donaciones, membresías y mercancía personalizada"
},
"category_selfpromo_guideline2": {
"message": "Agradecimientos gratuitos que no añaden al video"
},
"category_exclusive_access": { "category_exclusive_access": {
"message": "Acceso Exclusivo" "message": "Acceso Exclusivo"
}, },

View File

@@ -589,7 +589,7 @@
"description": "Short description for this category" "description": "Short description for this category"
}, },
"category_exclusive_access_guideline1": { "category_exclusive_access_guideline1": {
"message": "Koko video keskittyy johonkin, jonka käyttöoikeus on saatu veloituksetta tai tuetusti" "message": "Koko video esittelee jotakin, jonka käyttöoikeus on saatu veloituksetta tai tuetusti"
}, },
"category_interaction": { "category_interaction": {
"message": "Vuorovaikutusmuistutus (tilaaminen)" "message": "Vuorovaikutusmuistutus (tilaaminen)"

View File

@@ -545,6 +545,9 @@
"message": "till", "message": "till",
"description": "Used between segments. Example: 1:20 to 1:30" "description": "Used between segments. Example: 1:20 to 1:30"
}, },
"generic_guideline1": {
"message": "Inkludera segmentövergångar"
},
"generic_guideline2": { "generic_guideline2": {
"message": "Spelar som om ingenting hoppades över" "message": "Spelar som om ingenting hoppades över"
}, },
@@ -557,6 +560,9 @@
"category_sponsor_guideline1": { "category_sponsor_guideline1": {
"message": "Betalda kampanjer" "message": "Betalda kampanjer"
}, },
"category_sponsor_guideline2": {
"message": "Inte för donationer eller anpassade varor"
},
"category_selfpromo": { "category_selfpromo": {
"message": "Obetald/självbefodran" "message": "Obetald/självbefodran"
}, },
@@ -566,6 +572,12 @@
"category_selfpromo_guideline1": { "category_selfpromo_guideline1": {
"message": "Donationer, medlemskap och anpassade varor" "message": "Donationer, medlemskap och anpassade varor"
}, },
"category_selfpromo_guideline2": {
"message": "Gratis shoutouts som inte läggs till i videon"
},
"category_selfpromo_guideline3": {
"message": "Inte för företagsdesignade produkter och varor"
},
"category_exclusive_access": { "category_exclusive_access": {
"message": "Exklusiv tillgång" "message": "Exklusiv tillgång"
}, },
@@ -576,6 +588,9 @@
"message": "Denna video visar en produkt, tjänst eller plats som de har fått gratis eller subventionerad tillgång till", "message": "Denna video visar en produkt, tjänst eller plats som de har fått gratis eller subventionerad tillgång till",
"description": "Short description for this category" "description": "Short description for this category"
}, },
"category_exclusive_access_guideline1": {
"message": "Hela videon visar något med gratis eller subventionerad tillgång"
},
"category_interaction": { "category_interaction": {
"message": "Interaktionspåminnelse (Prenumerera)" "message": "Interaktionspåminnelse (Prenumerera)"
}, },
@@ -585,6 +600,12 @@
"category_interaction_guideline1": { "category_interaction_guideline1": {
"message": "Korta påminnelser om att gilla, prenumerera eller följa" "message": "Korta påminnelser om att gilla, prenumerera eller följa"
}, },
"category_interaction_guideline2": {
"message": "Inkluderar indirekta påminnelser att kommentera"
},
"category_interaction_guideline3": {
"message": "Inte för allmän marknadsföring, endast för uppmaningar"
},
"category_interaction_short": { "category_interaction_short": {
"message": "Interaktionspåminnelse" "message": "Interaktionspåminnelse"
}, },
@@ -597,21 +618,36 @@
"category_intro_short": { "category_intro_short": {
"message": "Uppehåll" "message": "Uppehåll"
}, },
"category_intro_guideline1": {
"message": "Intervall utan egentligt innehåll"
},
"category_intro_guideline2": {
"message": "Inte för övergångar med information"
},
"category_outro": { "category_outro": {
"message": "Slutkort/Credits" "message": "Slutkort/Credits"
}, },
"category_outro_description": { "category_outro_description": {
"message": "Credits eller när YouTube-slutkort visas. Inte för slut med information." "message": "Credits eller när YouTube-slutkort visas. Inte för slut med information."
}, },
"category_outro_guideline1": {
"message": "Inkludera inte innehåll, även om slutkort visas på skärmen"
},
"category_preview": { "category_preview": {
"message": "Förhandsgranska/sammanfatta" "message": "Förhandsgranska/sammanfatta"
}, },
"category_preview_description": { "category_preview_description": {
"message": "Snabb sammanfattning av tidigare avsnitt eller en förhandsvisning av vad som kommer upp senare i den aktuella videon. Avsett för redigerade klipp, inte för sammanfattningar." "message": "Snabb sammanfattning av tidigare avsnitt eller en förhandsvisning av vad som kommer upp senare i den aktuella videon. Avsett för redigerade klipp, inte för sammanfattningar."
}, },
"category_preview_guideline1": {
"message": "Klipp som visas senare, eller i en framtida video"
},
"category_preview_guideline2": { "category_preview_guideline2": {
"message": "Sammanfattning av en tidigare video" "message": "Sammanfattning av en tidigare video"
}, },
"category_preview_guideline3": {
"message": "Inte för sektioner som lägger till ytterligare innehåll"
},
"category_filler": { "category_filler": {
"message": "Ämnesavvikelse/Skämt" "message": "Ämnesavvikelse/Skämt"
}, },
@@ -621,6 +657,15 @@
"category_filler_short": { "category_filler_short": {
"message": "Utfyllnad" "message": "Utfyllnad"
}, },
"category_filler_guideline1": {
"message": "Tangentiella scener endast för utfyllnad eller humor"
},
"category_filler_guideline2": {
"message": "Distraktioner, bloopers, repriser"
},
"category_filler_guideline3": {
"message": "Inte för scener som krävs för att förstå ämnet"
},
"category_music_offtopic": { "category_music_offtopic": {
"message": "Musik: Icke-musikavsnitt" "message": "Musik: Icke-musikavsnitt"
}, },
@@ -630,12 +675,27 @@
"category_music_offtopic_short": { "category_music_offtopic_short": {
"message": "Icke-musik" "message": "Icke-musik"
}, },
"category_music_offtopic_guideline1": {
"message": "Avsnitt som inte finns i officiella utgåvor"
},
"category_music_offtopic_guideline2": {
"message": "Icke-musik i ett liveframträdande"
},
"category_poi_highlight": { "category_poi_highlight": {
"message": "Höjdpunkt" "message": "Höjdpunkt"
}, },
"category_poi_highlight_description": { "category_poi_highlight_description": {
"message": "Den del av videon som de flesta letar efter. Liknande kommentarer \"Video börjar på x\"." "message": "Den del av videon som de flesta letar efter. Liknande kommentarer \"Video börjar på x\"."
}, },
"category_poi_highlight_guideline1": {
"message": "Avsnitt som de flesta personer letar efter"
},
"category_poi_highlight_guideline2": {
"message": "Kan hoppa över sammanhang"
},
"category_poi_highlight_guideline3": {
"message": "Kan hoppa över till titeln eller miniatyrbilden"
},
"category_livestream_messages": { "category_livestream_messages": {
"message": "Liveström: Donations-/meddelandeavläsningar" "message": "Liveström: Donations-/meddelandeavläsningar"
}, },

View File

@@ -78,7 +78,7 @@
<sub class="sponsorStartHint grey-text">__MSG_popupHint__</sub> <sub class="sponsorStartHint grey-text">__MSG_popupHint__</sub>
<div align="center" style="margin: 8px 0;"> <div align="center" style="margin: 8px 0;">
<button id="sponsorStart" class="sbMediumButton" style="margin-right: 8px">__MSG_sponsorStart__</button> <button id="sponsorStart" class="sbMediumButton" style="margin-right: 8px">__MSG_sponsorStart__</button>
<button id="submitTimes" class="sbMediumButton" style="display: none; margin: 0 !important;">__MSG_submitTimesButton__</button> <button id="submitTimes" class="sbMediumButton" style="display: none;">__MSG_submitTimesButton__</button>
</div> </div>
<span id="submissionHint" style="display: none;">__MSG_submissionEditHint__</span> <span id="submissionHint" style="display: none;">__MSG_submissionEditHint__</span>
</div> </div>

View File

@@ -220,6 +220,9 @@ function messageListener(request: Message, sender: unknown, sendResponse: (respo
case "closePopup": case "closePopup":
closeInfoMenu(); closeInfoMenu();
break; break;
case "copyToClipboard":
navigator.clipboard.writeText(request.text);
break;
} }
} }

View File

@@ -42,7 +42,12 @@ interface HideSegmentMessage {
UUID: SegmentUUID; UUID: SegmentUUID;
} }
export type Message = BaseMessage & (DefaultMessage | BoolValueMessage | IsInfoFoundMessage | SubmitVoteMessage | HideSegmentMessage); interface CopyToClipboardMessage {
message: "copyToClipboard";
text: string;
}
export type Message = BaseMessage & (DefaultMessage | BoolValueMessage | IsInfoFoundMessage | SubmitVoteMessage | HideSegmentMessage | CopyToClipboardMessage);
export interface IsInfoFoundMessageResponse { export interface IsInfoFoundMessageResponse {
found: boolean; found: boolean;

View File

@@ -178,7 +178,7 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
PageElements.optionsButton.addEventListener("click", openOptions); PageElements.optionsButton.addEventListener("click", openOptions);
PageElements.helpButton.addEventListener("click", openHelp); PageElements.helpButton.addEventListener("click", openHelp);
PageElements.refreshSegmentsButton.addEventListener("click", refreshSegments); PageElements.refreshSegmentsButton.addEventListener("click", refreshSegments);
PageElements.sbPopupIconCopyUserID.addEventListener("click", async () => navigator.clipboard.writeText(await utils.getHash(Config.config.userID))); PageElements.sbPopupIconCopyUserID.addEventListener("click", async () => copyToClipboard(await utils.getHash(Config.config.userID)));
//show proper disable skipping button //show proper disable skipping button
const disableSkipping = Config.config.disableSkipping; const disableSkipping = Config.config.disableSkipping;
@@ -496,7 +496,7 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
uuidButton.src = chrome.runtime.getURL("icons/clipboard.svg"); uuidButton.src = chrome.runtime.getURL("icons/clipboard.svg");
uuidButton.title = chrome.i18n.getMessage("copySegmentID"); uuidButton.title = chrome.i18n.getMessage("copySegmentID");
uuidButton.addEventListener("click", () => { uuidButton.addEventListener("click", () => {
navigator.clipboard.writeText(UUID); copyToClipboard(UUID);
const stopAnimation = AnimationUtils.applyLoadingAnimation(uuidButton, 0.3); const stopAnimation = AnimationUtils.applyLoadingAnimation(uuidButton, 0.3);
stopAnimation(); stopAnimation();
}); });
@@ -850,6 +850,17 @@ async function runThePopup(messageListener?: MessageListener): Promise<void> {
hiddenButton.style.display = "none"; hiddenButton.style.display = "none";
} }
function copyToClipboard(text: string): void {
if (window === window.top) {
window.navigator.clipboard.writeText(text);
} else {
sendTabMessage({
message: "copyToClipboard",
text
});
}
}
/** /**
* Converts time in minutes to 2d 5h 25.1 * Converts time in minutes to 2d 5h 25.1
* If less than 1 hour, just returns minutes * If less than 1 hour, just returns minutes