Refactor media fetching logic out of viewer & gallery.

This commit is contained in:
Dermot Duffy
2022-01-14 21:31:16 -08:00
parent 22f25fcde7
commit f976f3d210
3 changed files with 123 additions and 135 deletions
+6 -41
View File
@@ -33,9 +33,7 @@ import { View } from '../view.js';
import {
createMediaShowInfo,
dispatchErrorMessageEvent,
dispatchMessageEvent,
} from '../common.js';
import { localize } from '../localize/localize.js';
import { renderProgressIndicator } from '../components/message.js';
import './next-prev-control.js';
@@ -60,44 +58,6 @@ export class FrigateCardViewer extends LitElement {
@property({ attribute: false })
protected resolvedMediaCache?: ResolvedMediaCache;
/**
* Asyncronously render the element.
* @returns A rendered template.
*/
protected async _fetchLatestMedia(): Promise<void> {
if (!this.view || !this.hass || !this.browseMediaQueryParameters) {
return;
}
let parent: BrowseMediaSource | null;
try {
parent = await BrowseMediaUtil.browseMediaQuery(
this.hass,
this.browseMediaQueryParameters,
);
} catch (e) {
return dispatchErrorMessageEvent(this, (e as Error).message);
}
const childIndex = BrowseMediaUtil.getFirstTrueMediaChildIndex(parent);
if (!parent || !parent.children || childIndex == null) {
return dispatchMessageEvent(
this,
this.browseMediaQueryParameters.mediaType == 'clips'
? localize('common.no_clip')
: localize('common.no_snapshot'),
this.browseMediaQueryParameters.mediaType == 'clips'
? 'mdi:filmstrip-off'
: 'mdi:camera-off',
);
}
this.view
.evolve({
target: parent,
childIndex: childIndex,
})
.dispatchChangeEvent(this);
}
/**
* Master render method.
* @returns A rendered template.
@@ -108,7 +68,12 @@ export class FrigateCardViewer extends LitElement {
}
if (!this.view.target) {
this._fetchLatestMedia();
BrowseMediaUtil.fetchLatestMediaAndDispatchViewChange(
this,
this.hass,
this.view,
this.browseMediaQueryParameters,
);
return renderProgressIndicator();
}