From 4b81c88794136660409329451080b9294253e2d5 Mon Sep 17 00:00:00 2001 From: Blake Blackshear Date: Thu, 26 May 2022 10:02:43 -0500 Subject: [PATCH 1/3] use specific jellyfin-ffmpeg build --- docker/Dockerfile | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index b1b91a65f..0bced8c3a 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -46,6 +46,7 @@ RUN pip3 wheel --wheel-dir=/wheels -r requirements-wheels.txt FROM debian:11-slim ARG TARGETARCH +ARG JELLYFIN_FFMPEG_VERSION=4.3.2-1 # https://askubuntu.com/questions/972516/debian-frontend-environment-variable ARG DEBIAN_FRONTEND="noninteractive" # http://stackoverflow.com/questions/48162574/ddg#49462622 @@ -72,9 +73,6 @@ RUN apt-get -qq update \ && apt-key adv --fetch-keys https://packages.cloud.google.com/apt/doc/apt-key.gpg \ && echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" > /etc/apt/sources.list.d/coral-edgetpu.list \ && echo "libedgetpu1-max libedgetpu/accepted-eula select true" | debconf-set-selections \ - # jellyfin-ffmpeg - && wget -O - https://repo.jellyfin.org/jellyfin_team.gpg.key | apt-key add - \ - && echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release ) $( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release ) main" | tee /etc/apt/sources.list.d/jellyfin.list \ && apt-get -qq update \ && apt-get -qq install --no-install-recommends --no-install-suggests -y \ # coral drivers @@ -82,8 +80,11 @@ RUN apt-get -qq update \ && pip3 install -U /wheels/*.whl \ # arch specific packages && if [ "${TARGETARCH}" = "amd64" ]; then \ - apt-get -qq install --no-install-recommends --no-install-suggests -y \ - mesa-va-drivers jellyfin-ffmpeg; else \ + # jellyfin-ffmpeg + wget -O /tmp/jellyfin.deb "https://repo.jellyfin.org/releases/server/debian/versions/jellyfin-ffmpeg/${JELLYFIN_FFMPEG_VERSION}/jellyfin-ffmpeg_${JELLYFIN_FFMPEG_VERSION}-$( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release )_$( dpkg --print-architecture ).deb" \ + && apt-get -qq install --no-install-recommends --no-install-suggests -y \ + mesa-va-drivers /tmp/jellyfin.deb \ + && rm /tmp/jellyfin.deb; else \ apt-get -qq install --no-install-recommends --no-install-suggests -y \ ffmpeg; \ fi \ From 468febc4340efe05dde7aaf30a9f47807a313ec9 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Thu, 26 May 2022 09:04:33 -0600 Subject: [PATCH 2/3] Catch crash on no internet (#3246) --- frigate/stats.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/frigate/stats.py b/frigate/stats.py index 4bbd5d6df..7e910b6d4 100644 --- a/frigate/stats.py +++ b/frigate/stats.py @@ -20,9 +20,13 @@ logger = logging.getLogger(__name__) def get_latest_version() -> str: - request = requests.get( - "https://api.github.com/repos/blakeblackshear/frigate/releases/latest" - ) + try: + request = requests.get( + "https://api.github.com/repos/blakeblackshear/frigate/releases/latest" + ) + except: + return "unknown" + response = request.json() if request.ok and response and "tag_name" in response: From ca693240b136fc53bafc59b0f4d4c4cdd0e9ccc9 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Thu, 26 May 2022 09:06:02 -0600 Subject: [PATCH 3/3] Favorite events delete button warning (#3225) * Add dialog to shield deletion of favorite event * Use state to keep track of event id * Adjust named * Set color of button --- web/src/routes/Events.jsx | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/web/src/routes/Events.jsx b/web/src/routes/Events.jsx index 4da3bee63..3be927f57 100644 --- a/web/src/routes/Events.jsx +++ b/web/src/routes/Events.jsx @@ -59,6 +59,10 @@ export default function Events({ path, ...props }) { has_snapshot: false, plus_id: undefined, }); + const [deleteFavoriteState, setDeleteFavoriteState] = useState({ + deletingFavoriteEventId: null, + showDeleteFavorite: false, + }); const eventsFetcher = useCallback((path, params) => { params = { ...params, include_thumbnails: 0, limit: API_LIMIT }; @@ -114,11 +118,16 @@ export default function Events({ path, ...props }) { } }; - const onDelete = async (e, eventId) => { + const onDelete = async (e, eventId, saved) => { e.stopPropagation(); - const response = await axios.delete(`events/${eventId}`); - if (response.status === 200) { - mutate(); + + if (saved) { + setDeleteFavoriteState({ deletingFavoriteEventId: eventId, showDeleteFavorite: true }); + } else { + const response = await axios.delete(`events/${eventId}`); + if (response.status === 200) { + mutate(); + } } }; @@ -374,6 +383,19 @@ export default function Events({ path, ...props }) { )} + {deleteFavoriteState.showDeleteFavorite && ( + +
+ Delete Saved Event? +

Confirm deletion of saved event.

+
+
+ +
+
+ )}
{eventPages ? ( eventPages.map((page, i) => { @@ -441,7 +463,7 @@ export default function Events({ path, ...props }) { )}
- onDelete(e, event.id)} /> + onDelete(e, event.id, event.retain_indefinitely)} />