From 56bb22d03d63ca6ae02aacb60562082dd82167ec Mon Sep 17 00:00:00 2001 From: Ajay Date: Fri, 26 Apr 2024 16:44:20 -0400 Subject: Allow importing segments with no category Also fixes case when importing chapters when having no permission to submit chapters --- src/content.ts | 4 +++- src/utils/exporter.ts | 33 ++++++++++++++++----------------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/content.ts b/src/content.ts index a7b8c45b..a48dca2b 100644 --- a/src/content.ts +++ b/src/content.ts @@ -303,7 +303,9 @@ function messageListener(request: Message, sender: unknown, sendResponse: (respo if (!sponsorTimesSubmitting.some( (s) => Math.abs(s.segment[0] - segment.segment[0]) < 1 && Math.abs(s.segment[1] - segment.segment[1]) < 1)) { - if (segment.category === "chapter" && !utils.getCategorySelection("chapter")) { + const hasChaptersPermission = (Config.config.showCategoryWithoutPermission + || Config.config.permissions["chapter"]); + if (segment.category === "chapter" && (!utils.getCategorySelection("chapter") || !hasChaptersPermission)) { segment.category = "chooseACategory" as Category; segment.actionType = ActionType.Skip; segment.description = ""; diff --git a/src/utils/exporter.ts b/src/utils/exporter.ts index 40d0f257..85e1b383 100644 --- a/src/utils/exporter.ts +++ b/src/utils/exporter.ts @@ -53,24 +53,23 @@ export function importTimes(data: string, videoDuration: number): SponsorTime[] titleRight = removeIf(split2[split2.length - 1], specialCharMatchers) const title = titleLeft?.length > titleRight?.length ? titleLeft : titleRight; - if (title) { - const determinedCategory = chapterNames.find(c => c.names.includes(title))?.code as Category; - - const segment: SponsorTime = { - segment: [startTime, getFormattedTimeToSeconds(match[1])], - category: determinedCategory ?? ("chapter" as Category), - actionType: determinedCategory ? ActionType.Skip : ActionType.Chapter, - description: title, - source: SponsorSourceType.Local, - UUID: generateUserID() as SegmentUUID - }; - - if (result.length > 0 && result[result.length - 1].segment[1] === null) { - result[result.length - 1].segment[1] = segment.segment[0]; - } - - result.push(segment); + const determinedCategory = chapterNames.find(c => c.names.includes(title))?.code as Category; + + const category = title ? (determinedCategory ?? ("chapter" as Category)) : "chooseACategory" as Category; + const segment: SponsorTime = { + segment: [startTime, getFormattedTimeToSeconds(match[1])], + category, + actionType: category === "chapter" ? ActionType.Chapter : ActionType.Skip, + description: category === "chapter" ? title : null, + source: SponsorSourceType.Local, + UUID: generateUserID() as SegmentUUID + }; + + if (result.length > 0 && result[result.length - 1].segment[1] === null) { + result[result.length - 1].segment[1] = segment.segment[0]; } + + result.push(segment); } } } -- cgit v1.2.3