mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2025-12-23 18:29:23 -05:00
service worker
This commit is contained in:
@@ -60,18 +60,16 @@
|
||||
localStorage.setItem('BASE_PATH', "{% base_path request 'base' %}")
|
||||
|
||||
|
||||
{#window.addEventListener("load", () => {#}
|
||||
{# if ("serviceWorker" in navigator) {#}
|
||||
{# navigator.serviceWorker.register("{% url 'service_worker' %}", {scope: "{% base_path request 'base' %}" + '/'}).then(function (reg) {#}
|
||||
{# }).catch(function (err) {#}
|
||||
{# console.warn('Error whilst registering service worker', err);#}
|
||||
{# });#}
|
||||
{# } else {#}
|
||||
{# console.warn('service worker not in navigator');#}
|
||||
{# }#}
|
||||
{#})
|
||||
;
|
||||
#}
|
||||
window.addEventListener("load", () => {
|
||||
if ("serviceWorker" in navigator) {
|
||||
navigator.serviceWorker.register("{% url 'service_worker' %}", {scope: "{% base_path request 'base' %}" + '/'}).then(function (reg) {
|
||||
}).catch(function (err) {
|
||||
console.warn('Error whilst registering service worker', err);
|
||||
});
|
||||
} else {
|
||||
console.warn('service worker not in navigator');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -120,7 +120,7 @@ urlpatterns = [
|
||||
path('api-token-auth/', CustomAuthToken.as_view()),
|
||||
|
||||
path('offline/', views.offline, name='view_offline'),
|
||||
#path('service-worker.js', (TemplateView.as_view(template_name="sw.js", content_type='application/javascript')), name='service_worker'),
|
||||
path('service-worker.js', views.service_worker, name='service_worker'),
|
||||
path('manifest.json', views.web_manifest, name='web_manifest'),
|
||||
|
||||
]
|
||||
|
||||
@@ -16,7 +16,7 @@ from django.core.cache import caches
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.core.management import call_command
|
||||
from django.db import models
|
||||
from django.http import HttpResponseRedirect, JsonResponse
|
||||
from django.http import HttpResponseRedirect, JsonResponse, HttpResponse
|
||||
from django.shortcuts import get_object_or_404, render
|
||||
from django.templatetags.static import static
|
||||
from django.urls import reverse, reverse_lazy
|
||||
@@ -31,7 +31,7 @@ from cookbook.helper.permission_helper import CustomIsGuest, GroupRequiredMixin,
|
||||
from cookbook.models import InviteLink, ShareLink, Space, UserSpace
|
||||
from cookbook.templatetags.theming_tags import get_theming_values
|
||||
from cookbook.version_info import VERSION_INFO
|
||||
from recipes.settings import PLUGINS
|
||||
from recipes.settings import PLUGINS, BASE_DIR
|
||||
|
||||
|
||||
def index(request, path=None, resource=None):
|
||||
@@ -134,15 +134,16 @@ def no_perm(request):
|
||||
return HttpResponseRedirect(reverse('account_login') + '?next=' + request.GET.get('next', '/search/'))
|
||||
return render(request, 'no_perm_info.html')
|
||||
|
||||
|
||||
def recipe_pdf_viewer(request, pk):
|
||||
with scopes_disabled():
|
||||
recipe = get_object_or_404(Recipe, pk=pk)
|
||||
if share_link_valid(recipe, request.GET.get('share', None)) or (has_group_permission(
|
||||
request.user, ['guest']) and recipe.space == request.space):
|
||||
|
||||
return render(request, 'pdf_viewer.html', {'recipe_id': pk, 'share': request.GET.get('share', None)})
|
||||
return HttpResponseRedirect(reverse('index'))
|
||||
|
||||
|
||||
def system(request):
|
||||
if not request.user.is_superuser:
|
||||
return HttpResponseRedirect(reverse('index'))
|
||||
@@ -451,6 +452,13 @@ def offline(request):
|
||||
return render(request, 'offline.html', {})
|
||||
|
||||
|
||||
def service_worker(request):
|
||||
with open(os.path.join(BASE_DIR, 'cookbook', 'static', 'vue3', 'service-worker.js'), 'rb') as service_worker_file:
|
||||
response = HttpResponse(content=service_worker_file)
|
||||
response['Content-Type'] = 'text/javascript'
|
||||
return response
|
||||
|
||||
|
||||
def test(request):
|
||||
if not settings.DEBUG:
|
||||
return HttpResponseRedirect(reverse('index'))
|
||||
@@ -516,4 +524,3 @@ def get_orphan_files(delete_orphans=False):
|
||||
orphans = find_orphans()
|
||||
|
||||
return [img[1] for img in orphans]
|
||||
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
:root {
|
||||
--md-primary-fg-color: #ffcb76;
|
||||
--md-accent-fg-color: #FF6F00;
|
||||
:root > * {
|
||||
--md-primary-fg-color: #ddbf86;
|
||||
--md-accent-fg-color: #b55e4f;
|
||||
|
||||
--md-primary-fg-color--light: #ffcb76;
|
||||
--md-primary-fg-color--light: #ddbf86;
|
||||
|
||||
/* not working part, has no effect */
|
||||
--md-primary-bg-color: #272727;
|
||||
--md-default-bg-color: #272727;
|
||||
--md-default-bg-color--light: #272727;
|
||||
--md-default-bg-color--lighter: #272727;
|
||||
--md-default-bg-color--lightest: #272727;
|
||||
--md-primary-bg-color: #121212;
|
||||
--md-default-bg-color: #121212;
|
||||
--md-default-bg-color--light: #f5efea;
|
||||
--md-default-bg-color--lighter: #f5efea;
|
||||
--md-default-bg-color--lightest: #f5efea;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -13,6 +13,8 @@ theme:
|
||||
favicon: logo_color.svg
|
||||
palette:
|
||||
scheme: slate
|
||||
primary: custom
|
||||
accent: custom
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
"typescript": "^5.8.3",
|
||||
"vite": "6.3.5",
|
||||
"vite-plugin-pwa": "^1.0.1",
|
||||
"workbox-core": "^7.3.0",
|
||||
"workbox-build": "^7.3.0",
|
||||
"workbox-window": "^7.3.0",
|
||||
"workbox-background-sync": "^7.3.0",
|
||||
|
||||
@@ -4,12 +4,18 @@ import {registerRoute, setCatchHandler} from 'workbox-routing';
|
||||
import {CacheFirst, NetworkFirst, NetworkOnly, StaleWhileRevalidate} from 'workbox-strategies';
|
||||
import {ExpirationPlugin} from 'workbox-expiration';
|
||||
import {BackgroundSyncPlugin, Queue} from "workbox-background-sync";
|
||||
import { clientsClaim } from 'workbox-core'
|
||||
|
||||
|
||||
|
||||
cleanupOutdatedCaches()
|
||||
|
||||
declare let self: ServiceWorkerGlobalScope
|
||||
precacheAndRoute(self.__WB_MANIFEST)
|
||||
|
||||
self.skipWaiting()
|
||||
clientsClaim()
|
||||
|
||||
const OFFLINE_CACHE_NAME = 'offline-html';
|
||||
let script_name = typeof window !== 'undefined' ? localStorage.getItem('SCRIPT_NAME') : '/'
|
||||
var OFFLINE_PAGE_URL = script_name + 'offline/';
|
||||
|
||||
@@ -16,14 +16,10 @@ export default defineConfig({
|
||||
autoImport: true,
|
||||
}),
|
||||
VitePWA({
|
||||
registerType: 'autoUpdate',
|
||||
//registerType: 'autoUpdate',
|
||||
strategies: 'injectManifest',
|
||||
srcDir: 'src',
|
||||
filename: 'service-worker.ts',
|
||||
injectManifest: {
|
||||
swDest: "../cookbook/templates/sw.js",
|
||||
injectionPoint: undefined
|
||||
}
|
||||
})
|
||||
],
|
||||
resolve: {
|
||||
|
||||
@@ -3581,7 +3581,7 @@ workbox-cacheable-response@7.3.0:
|
||||
dependencies:
|
||||
workbox-core "7.3.0"
|
||||
|
||||
workbox-core@7.3.0:
|
||||
workbox-core@7.3.0, workbox-core@^7.3.0:
|
||||
version "7.3.0"
|
||||
resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-7.3.0.tgz#f24fb92041a0b7482fe2dd856544aaa9fa105248"
|
||||
integrity sha512-Z+mYrErfh4t3zi7NVTvOuACB0A/jA3bgxUN3PwtAVHvfEsZxV9Iju580VEETug3zYJRc0Dmii/aixI/Uxj8fmw==
|
||||
|
||||
Reference in New Issue
Block a user