feeds-fun 1.22.6 → 1.22.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "feeds-fun",
3
- "version": "1.22.6",
3
+ "version": "1.22.8",
4
4
  "author": "Aliaksei Yaletski (Tiendil) <a.eletsky@gmail.com> (https://tiendil.org/)",
5
5
  "description": "Frontend for the Feeds Fun — web-based news reader",
6
6
  "keywords": [
@@ -24,6 +24,7 @@
24
24
  v-for="tag of rule.tags"
25
25
  :key="tag"
26
26
  :uid="tag"
27
+ :excluded="rule.excludedTags.includes(tag)"
27
28
  :css-modifier="cssModifiers[tag]" />
28
29
  </div>
29
30
  </div>
@@ -80,11 +81,11 @@
80
81
 
81
82
  const cssModifiers: {[key: string]: string} = {};
82
83
 
84
+ const modifier = properties.rule.score > 0 ? "positive" : "negative";
85
+
86
+ console.log("score", properties.rule.score, "modifier", modifier);
87
+
83
88
  for (const tag of properties.rule.tags) {
84
- if (properties.rule.excludedTags.includes(tag)) {
85
- cssModifiers[tag] = "negative";
86
- continue;
87
- }
88
- cssModifiers[tag] = "positive";
89
+ cssModifiers[tag] = modifier;
89
90
  }
90
91
  </script>
@@ -4,8 +4,6 @@
4
4
  <div class="flex flex-col col-span-2 items-center sm:items-start">
5
5
  <h3 class="text-lg font-semibold mb-4">Feeds Fun</h3>
6
6
  <div class="flex flex-col space-y-2">
7
- <div class="font-medium"> The project is in demo mode and free of charge </div>
8
-
9
7
  <div>Version: {{ settings.version }}</div>
10
8
 
11
9
  <div>
@@ -73,6 +71,14 @@
73
71
  Privacy Policy
74
72
  </a>
75
73
 
74
+ <a
75
+ v-if="settings.crmImpressum"
76
+ :href="router.resolve({name: 'impressum'}).href"
77
+ class="ffun-normal-link"
78
+ @click.prevent="router.push({name: 'impressum'})">
79
+ Impressum
80
+ </a>
81
+
76
82
  <a
77
83
  v-if="!globalState.isSingleUserMode"
78
84
  href="#"
@@ -1,4 +1,5 @@
1
1
  <template>
2
+ <strong v-if="excluded">not </strong>
2
3
  <span>
3
4
  {{ tagInfo.name }}
4
5
 
@@ -26,5 +27,6 @@
26
27
 
27
28
  const properties = defineProps<{
28
29
  tagInfo: t.TagInfo;
30
+ excluded?: boolean;
29
31
  }>();
30
32
  </script>
@@ -2,7 +2,9 @@
2
2
  <div
3
3
  :class="classes"
4
4
  @click.prevent="onClick()">
5
- <tag-base :tag-info="tagInfo" />
5
+ <tag-base
6
+ :tag-info="tagInfo"
7
+ :excluded="excluded" />
6
8
  </div>
7
9
  </template>
8
10
 
@@ -26,6 +28,7 @@
26
28
  const properties = defineProps<{
27
29
  uid: string;
28
30
  cssModifier: string;
31
+ excluded: boolean;
29
32
  }>();
30
33
 
31
34
  const tagInfo = computed(() => {
package/src/logic/api.ts CHANGED
@@ -41,6 +41,10 @@ export function logoutRedirect() {
41
41
  window.location.assign("/spa/auth/logout");
42
42
  }
43
43
 
44
+ function handle503() {
45
+ window.location.reload();
46
+ }
47
+
44
48
  let _refreshingAuth: Promise<void> | null = null;
45
49
 
46
50
  enum Ffun401Behaviour {
@@ -60,6 +64,10 @@ apiPrivate.interceptors.response.use(
60
64
  throw error;
61
65
  }
62
66
 
67
+ if (response.status === 503) {
68
+ return handle503();
69
+ }
70
+
63
71
  if (response.status !== 401) {
64
72
  throw error;
65
73
  }
@@ -99,6 +107,23 @@ apiPrivate.interceptors.response.use(
99
107
  }
100
108
  );
101
109
 
110
+ apiPublic.interceptors.response.use(
111
+ (r) => r,
112
+ async (error: AxiosError) => {
113
+ const {response} = error;
114
+
115
+ if (!response) {
116
+ throw error;
117
+ }
118
+
119
+ if (response.status === 503) {
120
+ return handle503();
121
+ }
122
+
123
+ throw error;
124
+ }
125
+ );
126
+
102
127
  async function postPublic({url, data}: {url: string; data: any}) {
103
128
  const response = await apiPublic.post(url, data);
104
129
  return response.data;
@@ -20,6 +20,7 @@ export const utmLifetime = import.meta.env.VITE_FFUN_UTM_LIFETIME || 7; // days
20
20
 
21
21
  export const crmTerms = import.meta.env.VITE_FFUN_CRM_TERMS || null;
22
22
  export const crmPrivacy = import.meta.env.VITE_FFUN_CRM_PRIVACY || null;
23
+ export const crmImpressum = import.meta.env.VITE_FFUN_CRM_IMPRESSUM || null;
23
24
 
24
25
  export const hasCollections = import.meta.env.VITE_FFUN_HAS_COLLECTIONS == "true" || false;
25
26
 
@@ -69,6 +69,12 @@ const router = createRouter({
69
69
  component: CRMView,
70
70
  props: {content: settings.crmPrivacy, kind: "privacy"}
71
71
  },
72
+ {
73
+ path: "/impressum",
74
+ name: "impressum",
75
+ component: CRMView,
76
+ props: {content: settings.crmImpressum, kind: "impressum"}
77
+ },
72
78
  {
73
79
  path: "/:pathMatch(.*)*",
74
80
  redirect: "/"