Faster loading IMGUR previews; slightly slower triggering preview popup
This commit is contained in:
parent
eba896275b
commit
7043a9af89
|
@ -4,6 +4,8 @@
|
||||||
* Moved database queries to a web worker to gain more responsive UI
|
* Moved database queries to a web worker to gain more responsive UI
|
||||||
* Fixed Gelbooru, Instagram, and Twitter previews
|
* Fixed Gelbooru, Instagram, and Twitter previews
|
||||||
* Fixed green names not showing up when 'show friends/bookmarks in a different colour' is selected
|
* Fixed green names not showing up when 'show friends/bookmarks in a different colour' is selected
|
||||||
|
* Sped up Imgur previews
|
||||||
|
* Minor UI design adjustments for user names and badges
|
||||||
|
|
||||||
|
|
||||||
## 1.9.0
|
## 1.9.0
|
||||||
|
|
|
@ -127,7 +127,7 @@
|
||||||
|
|
||||||
|
|
||||||
@Hook('mounted')
|
@Hook('mounted')
|
||||||
onMounted(): void {
|
async onMounted(): Promise<void> {
|
||||||
console.info('Mounted ImagePreview');
|
console.info('Mounted ImagePreview');
|
||||||
|
|
||||||
// tslint:disable-next-line:no-floating-promises
|
// tslint:disable-next-line:no-floating-promises
|
||||||
|
@ -176,6 +176,12 @@
|
||||||
|
|
||||||
const webview = this.getWebview();
|
const webview = this.getWebview();
|
||||||
|
|
||||||
|
// clear preview cache, particularly cookies
|
||||||
|
// setInterval(
|
||||||
|
// () => remote.webContents.fromId(webview.getWebContentsId()).session.clearStorageData({storages: ['cookies', 'indexdb']}),
|
||||||
|
// 5000
|
||||||
|
// );
|
||||||
|
|
||||||
webview.addEventListener(
|
webview.addEventListener(
|
||||||
'update-target-url', // 'did-navigate', // 'dom-ready',
|
'update-target-url', // 'did-navigate', // 'dom-ready',
|
||||||
(event: EventBusEvent) => {
|
(event: EventBusEvent) => {
|
||||||
|
@ -447,7 +453,7 @@
|
||||||
|
|
||||||
this.debugLog('ImagePreview: show.exec', url);
|
this.debugLog('ImagePreview: show.exec', url);
|
||||||
|
|
||||||
const due = ((url === this.exitUrl) && (this.exitInterval)) ? 0 : 100;
|
const due = ((url === this.exitUrl) && (this.exitInterval)) ? 0 : 200;
|
||||||
|
|
||||||
this.url = url;
|
this.url = url;
|
||||||
this.domain = domain(url);
|
this.domain = domain(url);
|
||||||
|
|
|
@ -13,7 +13,9 @@ export class ImageUrlMutator {
|
||||||
|
|
||||||
private solvers: UrlSolver[] = [];
|
private solvers: UrlSolver[] = [];
|
||||||
|
|
||||||
private static IMGUR_CLIENT_ID = 'd60e27140a73b2e';
|
private static readonly IMGUR_CLIENT_ID = 'd60e27140a73b2e';
|
||||||
|
|
||||||
|
private static readonly IMGUR_IMAGE_URL_REGEX = /^https?:\/\/i.imgur.com\/([a-zA-Z0-9]+)(\.[a-z0-9A-Z]+)(.*)$/;
|
||||||
|
|
||||||
private debug: boolean;
|
private debug: boolean;
|
||||||
|
|
||||||
|
@ -122,7 +124,7 @@ export class ImageUrlMutator {
|
||||||
if (this.debug)
|
if (this.debug)
|
||||||
console.log('Imgur gallery', url, imageUrl, imageCount);
|
console.log('Imgur gallery', url, imageUrl, imageCount);
|
||||||
|
|
||||||
return `${imageUrl}?flist_gallery_image_count=${imageCount}`;
|
return this.getOptimizedImgurUrlFromUrl(`${imageUrl}?flist_gallery_image_count=${imageCount}`);
|
||||||
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('Imgur Gallery Failure', url, err);
|
console.error('Imgur Gallery Failure', url, err);
|
||||||
|
@ -158,7 +160,7 @@ export class ImageUrlMutator {
|
||||||
if (this.debug)
|
if (this.debug)
|
||||||
console.log('Imgur album', url, imageUrl, imageCount);
|
console.log('Imgur album', url, imageUrl, imageCount);
|
||||||
|
|
||||||
return `${imageUrl}?flist_gallery_image_count=${imageCount}`;
|
return this.getOptimizedImgurUrlFromUrl(`${imageUrl}?flist_gallery_image_count=${imageCount}`);
|
||||||
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('Imgur Album Failure', url, err);
|
console.error('Imgur Album Failure', url, err);
|
||||||
|
@ -197,7 +199,30 @@ export class ImageUrlMutator {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Load large thumbnail instead of the full size picture when possible
|
||||||
|
this.add(ImageUrlMutator.IMGUR_IMAGE_URL_REGEX,
|
||||||
|
async(_url: string, match: RegExpMatchArray) => this.getOptimizedImgUrlFromMatch(match)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
getOptimizedImgUrlFromMatch(match: RegExpMatchArray): string {
|
||||||
|
const imageId = match[1];
|
||||||
|
const ext = match[2];
|
||||||
|
const rest = match[3];
|
||||||
|
|
||||||
|
const finalExt = ((ext === '.gif') || (ext === '.gifv'))
|
||||||
|
? '.mp4'
|
||||||
|
: ext;
|
||||||
|
|
||||||
|
return `https://i.imgur.com/${imageId}${((imageId.length <= 7) && (finalExt !== '.mp4')) ? 'l' : ''}${finalExt}${rest}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
getOptimizedImgurUrlFromUrl(url: string): string {
|
||||||
|
const m = url.match(ImageUrlMutator.IMGUR_IMAGE_URL_REGEX);
|
||||||
|
|
||||||
|
return m ? this.getOptimizedImgUrlFromMatch(m) : url;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue