{ "version": 3, "sources": ["src/app/_services/image.service.ts"], "sourcesContent": ["import {DestroyRef, inject, Injectable} from '@angular/core';\nimport { environment } from 'src/environments/environment';\nimport { ThemeService } from './theme.service';\nimport { RecentlyAddedItem } from '../_models/recently-added-item';\nimport { AccountService } from './account.service';\nimport {takeUntilDestroyed} from \"@angular/core/rxjs-interop\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ImageService {\n private readonly destroyRef = inject(DestroyRef);\n baseUrl = environment.apiUrl;\n apiKey: string = '';\n encodedKey: string = '';\n public placeholderImage = 'assets/images/image-placeholder.dark-min.png';\n public errorImage = 'assets/images/error-placeholder2.dark-min.png';\n public resetCoverImage = 'assets/images/image-reset-cover-min.png';\n public errorWebLinkImage = 'assets/images/broken-white-32x32.png';\n public nextChapterImage = 'assets/images/image-placeholder.dark-min.png';\n public noPersonImage = 'assets/images/error-person-missing.dark.min.png';\n\n constructor(private accountService: AccountService, private themeService: ThemeService) {\n this.themeService.currentTheme$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(theme => {\n if (this.themeService.isDarkTheme()) {\n this.placeholderImage = 'assets/images/image-placeholder.dark-min.png';\n this.errorImage = 'assets/images/error-placeholder2.dark-min.png';\n this.errorWebLinkImage = 'assets/images/broken-black-32x32.png';\n this.noPersonImage = 'assets/images/error-person-missing.dark.min.png';\n } else {\n this.placeholderImage = 'assets/images/image-placeholder-min.png';\n this.errorImage = 'assets/images/error-placeholder2-min.png';\n this.errorWebLinkImage = 'assets/images/broken-white-32x32.png';\n this.noPersonImage = 'assets/images/error-person-missing.min.png';\n }\n });\n\n this.accountService.currentUser$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(user => {\n if (user) {\n this.apiKey = user.apiKey;\n this.encodedKey = encodeURIComponent(this.apiKey);\n }\n });\n }\n\n getRecentlyAddedItem(item: RecentlyAddedItem) {\n if (item.chapterId === 0) {\n return this.getVolumeCoverImage(item.volumeId);\n }\n return this.getChapterCoverImage(item.chapterId);\n }\n\n /**\n * Returns the entity type from a cover image url. Undefied if not applicable\n * @param url\n * @returns\n */\n getEntityTypeFromUrl(url: string) {\n if (url.indexOf('?') < 0) return undefined;\n const part = url.split('?')[1];\n const equalIndex = part.indexOf('=');\n return part.substring(0, equalIndex).replace('Id', '');\n }\n\n getPersonImage(personId: number) {\n return `${this.baseUrl}image/person-cover?personId=${personId}&apiKey=${this.encodedKey}`;\n }\n getPersonImageByName(name: string) {\n return `${this.baseUrl}image/person-cover-by-name?name=${name}&apiKey=${this.encodedKey}`;\n }\n\n getLibraryCoverImage(libraryId: number) {\n return `${this.baseUrl}image/library-cover?libraryId=${libraryId}&apiKey=${this.encodedKey}`;\n }\n\n getVolumeCoverImage(volumeId: number) {\n return `${this.baseUrl}image/volume-cover?volumeId=${volumeId}&apiKey=${this.encodedKey}`;\n }\n\n getSeriesCoverImage(seriesId: number) {\n return `${this.baseUrl}image/series-cover?seriesId=${seriesId}&apiKey=${this.encodedKey}`;\n }\n\n getCollectionCoverImage(collectionTagId: number) {\n return `${this.baseUrl}image/collection-cover?collectionTagId=${collectionTagId}&apiKey=${this.encodedKey}`;\n }\n\n getReadingListCoverImage(readingListId: number) {\n return `${this.baseUrl}image/readinglist-cover?readingListId=${readingListId}&apiKey=${this.encodedKey}`;\n }\n\n getChapterCoverImage(chapterId: number) {\n return `${this.baseUrl}image/chapter-cover?chapterId=${chapterId}&apiKey=${this.encodedKey}`;\n }\n\n getBookmarkedImage(chapterId: number, pageNum: number) {\n return `${this.baseUrl}image/bookmark?chapterId=${chapterId}&apiKey=${this.encodedKey}&pageNum=${pageNum}`;\n }\n\n getWebLinkImage(url: string) {\n return `${this.baseUrl}image/web-link?url=${encodeURIComponent(url)}&apiKey=${this.encodedKey}`;\n }\n\n getPublisherImage(name: string) {\n return `${this.baseUrl}image/publisher?publisherName=${encodeURIComponent(name)}&apiKey=${this.encodedKey}`;\n }\n\n getCoverUploadImage(filename: string) {\n return `${this.baseUrl}image/cover-upload?filename=${encodeURIComponent(filename)}&apiKey=${this.encodedKey}`;\n }\n\n updateErroredWebLinkImage(event: any) {\n event.target.src = this.errorWebLinkImage;\n }\n\n /**\n * Used to refresh an existing loaded image (lazysizes). If random already attached, will append another number onto it.\n * @param url Existing request url from ImageService only\n * @returns Url with a random parameter attached\n */\n randomize(url: string) {\n const r = Math.round(Math.random() * 100 + 1);\n if (url.indexOf('&random') >= 0) {\n return url + 1;\n }\n return url + '&random=' + r;\n }\n}\n"], "mappings": "2JAUA,IAAaA,GAAY,IAAA,CAAnB,MAAOA,CAAY,CAYvBC,YAAoBC,EAAwCC,EAA0B,CAAlE,KAAAD,eAAAA,EAAwC,KAAAC,aAAAA,EAX3C,KAAAC,WAAaC,EAAOC,CAAU,EAC/C,KAAAC,QAAUC,EAAYC,OACtB,KAAAC,OAAiB,GACjB,KAAAC,WAAqB,GACd,KAAAC,iBAAmB,+CACnB,KAAAC,WAAa,gDACb,KAAAC,gBAAkB,0CAClB,KAAAC,kBAAoB,uCACpB,KAAAC,iBAAmB,+CACnB,KAAAC,cAAgB,kDAGrB,KAAKd,aAAae,cAAcC,KAAKC,EAAmB,KAAKhB,UAAU,CAAC,EAAEiB,UAAUC,GAAQ,CACtF,KAAKnB,aAAaoB,YAAW,GAC/B,KAAKX,iBAAmB,+CACxB,KAAKC,WAAa,gDAClB,KAAKE,kBAAoB,uCACzB,KAAKE,cAAgB,oDAErB,KAAKL,iBAAmB,0CACxB,KAAKC,WAAa,2CAClB,KAAKE,kBAAoB,uCACzB,KAAKE,cAAgB,6CAEzB,CAAC,EAED,KAAKf,eAAesB,aAAaL,KAAKC,EAAmB,KAAKhB,UAAU,CAAC,EAAEiB,UAAUI,GAAO,CACtFA,IACF,KAAKf,OAASe,EAAKf,OACnB,KAAKC,WAAae,mBAAmB,KAAKhB,MAAM,EAEpD,CAAC,CACH,CAEAiB,qBAAqBC,EAAuB,CAC1C,OAAIA,EAAKC,YAAc,EACd,KAAKC,oBAAoBF,EAAKG,QAAQ,EAExC,KAAKC,qBAAqBJ,EAAKC,SAAS,CACjD,CAOAI,qBAAqBC,EAAW,CAC9B,GAAIA,EAAIC,QAAQ,GAAG,EAAI,EAAG,OAC1B,IAAMC,EAAOF,EAAIG,MAAM,GAAG,EAAE,CAAC,EACvBC,EAAaF,EAAKD,QAAQ,GAAG,EACnC,OAAOC,EAAKG,UAAU,EAAGD,CAAU,EAAEE,QAAQ,KAAM,EAAE,CACvD,CAEAC,eAAeC,EAAgB,CAC7B,MAAO,GAAG,KAAKnC,OAAO,+BAA+BmC,CAAQ,WAAW,KAAK/B,UAAU,EACzF,CACAgC,qBAAqBC,EAAY,CAC/B,MAAO,GAAG,KAAKrC,OAAO,mCAAmCqC,CAAI,WAAW,KAAKjC,UAAU,EACzF,CAEAkC,qBAAqBC,EAAiB,CACpC,MAAO,GAAG,KAAKvC,OAAO,iCAAiCuC,CAAS,WAAW,KAAKnC,UAAU,EAC5F,CAEAmB,oBAAoBC,EAAgB,CAClC,MAAO,GAAG,KAAKxB,OAAO,+BAA+BwB,CAAQ,WAAW,KAAKpB,UAAU,EACzF,CAEAoC,oBAAoBC,EAAgB,CAClC,MAAO,GAAG,KAAKzC,OAAO,+BAA+ByC,CAAQ,WAAW,KAAKrC,UAAU,EACzF,CAEAsC,wBAAwBC,EAAuB,CAC7C,MAAO,GAAG,KAAK3C,OAAO,0CAA0C2C,CAAe,WAAW,KAAKvC,UAAU,EAC3G,CAEAwC,yBAAyBC,EAAqB,CAC5C,MAAO,GAAG,KAAK7C,OAAO,yCAAyC6C,CAAa,WAAW,KAAKzC,UAAU,EACxG,CAEAqB,qBAAqBH,EAAiB,CACpC,MAAO,GAAG,KAAKtB,OAAO,iCAAiCsB,CAAS,WAAW,KAAKlB,UAAU,EAC5F,CAEA0C,mBAAmBxB,EAAmByB,EAAe,CACnD,MAAO,GAAG,KAAK/C,OAAO,4BAA4BsB,CAAS,WAAW,KAAKlB,UAAU,YAAY2C,CAAO,EAC1G,CAEAC,gBAAgBrB,EAAW,CACzB,MAAO,GAAG,KAAK3B,OAAO,sBAAsBmB,mBAAmBQ,CAAG,CAAC,WAAW,KAAKvB,UAAU,EAC/F,CAEA6C,kBAAkBZ,EAAY,CAC5B,MAAO,GAAG,KAAKrC,OAAO,iCAAiCmB,mBAAmBkB,CAAI,CAAC,WAAW,KAAKjC,UAAU,EAC3G,CAEA8C,oBAAoBC,EAAgB,CAClC,MAAO,GAAG,KAAKnD,OAAO,+BAA+BmB,mBAAmBgC,CAAQ,CAAC,WAAW,KAAK/C,UAAU,EAC7G,CAEAgD,0BAA0BC,EAAU,CAClCA,EAAMC,OAAOC,IAAM,KAAK/C,iBAC1B,CAOAgD,UAAU7B,EAAW,CACnB,IAAM8B,EAAIC,KAAKC,MAAMD,KAAKE,OAAM,EAAK,IAAM,CAAC,EAC5C,OAAIjC,EAAIC,QAAQ,SAAS,GAAK,EACrBD,EAAM,EAERA,EAAM,WAAa8B,CAC5B,iDApHWhE,GAAYoE,EAAAC,CAAA,EAAAD,EAAAE,CAAA,CAAA,CAAA,CAAA,iCAAZtE,EAAYuE,QAAZvE,EAAYwE,UAAAC,WAFX,MAAM,CAAA,CAAA,SAEPzE,CAAY,GAAA", "names": ["ImageService", "constructor", "accountService", "themeService", "destroyRef", "inject", "DestroyRef", "baseUrl", "environment", "apiUrl", "apiKey", "encodedKey", "placeholderImage", "errorImage", "resetCoverImage", "errorWebLinkImage", "nextChapterImage", "noPersonImage", "currentTheme$", "pipe", "takeUntilDestroyed", "subscribe", "theme", "isDarkTheme", "currentUser$", "user", "encodeURIComponent", "getRecentlyAddedItem", "item", "chapterId", "getVolumeCoverImage", "volumeId", "getChapterCoverImage", "getEntityTypeFromUrl", "url", "indexOf", "part", "split", "equalIndex", "substring", "replace", "getPersonImage", "personId", "getPersonImageByName", "name", "getLibraryCoverImage", "libraryId", "getSeriesCoverImage", "seriesId", "getCollectionCoverImage", "collectionTagId", "getReadingListCoverImage", "readingListId", "getBookmarkedImage", "pageNum", "getWebLinkImage", "getPublisherImage", "getCoverUploadImage", "filename", "updateErroredWebLinkImage", "event", "target", "src", "randomize", "r", "Math", "round", "random", "\u0275\u0275inject", "AccountService", "ThemeService", "factory", "\u0275fac", "providedIn"] }