mirror of
https://github.com/iptv-org/iptv-org.github.io.git
synced 2025-05-10 17:10:06 -04:00
Merge pull request #2002 from iptv-org/freearhey-patch-2
Patch 2024.12.2
This commit is contained in:
commit
9aa907e060
8 changed files with 132 additions and 25 deletions
53
package-lock.json
generated
53
package-lock.json
generated
|
@ -22,6 +22,7 @@
|
|||
"svelte": "^3.44.0",
|
||||
"svelte-simple-modal": "^1.3.1",
|
||||
"svelte-sitemap": "^2.6.0",
|
||||
"sveltejs-tippy": "^3.0.0",
|
||||
"tailwind-scrollbar-hide": "^1.1.7",
|
||||
"tailwindcss": "^3.2.7",
|
||||
"transliteration": "^2.2.0",
|
||||
|
@ -518,6 +519,16 @@
|
|||
"integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@popperjs/core": {
|
||||
"version": "2.11.8",
|
||||
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
|
||||
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
|
||||
"dev": true,
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/popperjs"
|
||||
}
|
||||
},
|
||||
"node_modules/@sveltejs/adapter-static": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-2.0.1.tgz",
|
||||
|
@ -2022,6 +2033,15 @@
|
|||
"node": ">= 14.17.0"
|
||||
}
|
||||
},
|
||||
"node_modules/sveltejs-tippy": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/sveltejs-tippy/-/sveltejs-tippy-3.0.0.tgz",
|
||||
"integrity": "sha512-LAfQikm61AeqZW1hCFWUsmGEMmhMHDvrPV0JhbT38Ell9SqBjmFaY//+YKUxaJvx6nLMxGQdlcHA1rDg2Ml8tQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"tippy.js": "~6.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/tailwind-scrollbar-hide": {
|
||||
"version": "1.1.7",
|
||||
"resolved": "https://registry.npmjs.org/tailwind-scrollbar-hide/-/tailwind-scrollbar-hide-1.1.7.tgz",
|
||||
|
@ -2079,6 +2099,15 @@
|
|||
"globrex": "^0.1.2"
|
||||
}
|
||||
},
|
||||
"node_modules/tippy.js": {
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.0.3.tgz",
|
||||
"integrity": "sha512-buQF6HugTA4YeSA/s9xBhu0ferEAx7sRSn45G+Juh3p+Dz3vEKfxtqdg6JUnHIWDCV/r0u8Lrobs9AB4dtYcUQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@popperjs/core": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
|
@ -2566,6 +2595,12 @@
|
|||
"integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
|
||||
"dev": true
|
||||
},
|
||||
"@popperjs/core": {
|
||||
"version": "2.11.8",
|
||||
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
|
||||
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
|
||||
"dev": true
|
||||
},
|
||||
"@sveltejs/adapter-static": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-2.0.1.tgz",
|
||||
|
@ -3573,6 +3608,15 @@
|
|||
"xmlbuilder2": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"sveltejs-tippy": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/sveltejs-tippy/-/sveltejs-tippy-3.0.0.tgz",
|
||||
"integrity": "sha512-LAfQikm61AeqZW1hCFWUsmGEMmhMHDvrPV0JhbT38Ell9SqBjmFaY//+YKUxaJvx6nLMxGQdlcHA1rDg2Ml8tQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"tippy.js": "~6.0.1"
|
||||
}
|
||||
},
|
||||
"tailwind-scrollbar-hide": {
|
||||
"version": "1.1.7",
|
||||
"resolved": "https://registry.npmjs.org/tailwind-scrollbar-hide/-/tailwind-scrollbar-hide-1.1.7.tgz",
|
||||
|
@ -3620,6 +3664,15 @@
|
|||
"globrex": "^0.1.2"
|
||||
}
|
||||
},
|
||||
"tippy.js": {
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.0.3.tgz",
|
||||
"integrity": "sha512-buQF6HugTA4YeSA/s9xBhu0ferEAx7sRSn45G+Juh3p+Dz3vEKfxtqdg6JUnHIWDCV/r0u8Lrobs9AB4dtYcUQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@popperjs/core": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
"tailwind-scrollbar-hide": "^1.1.7",
|
||||
"tailwindcss": "^3.2.7",
|
||||
"transliteration": "^2.2.0",
|
||||
"validator": "^13.11.0"
|
||||
"validator": "^13.11.0",
|
||||
"sveltejs-tippy": "^3.0.0"
|
||||
}
|
||||
}
|
||||
|
|
30
src/components/BlockedBadge.svelte
Normal file
30
src/components/BlockedBadge.svelte
Normal file
|
@ -0,0 +1,30 @@
|
|||
<script>
|
||||
import tippy from 'sveltejs-tippy'
|
||||
|
||||
export let channel
|
||||
|
||||
const blocklistRefs = channel.blocklist_records
|
||||
.map(record => {
|
||||
const parts = record.ref.split('/')
|
||||
const issueId = parts.pop()
|
||||
const prefix = record.ref.includes('/issues/') ? '#' : ''
|
||||
|
||||
return `<a class="underline" target="_blank" rel="noreferrer" href="${record.ref}">${prefix}${issueId}</a>`
|
||||
})
|
||||
.join(', ')
|
||||
</script>
|
||||
|
||||
<div
|
||||
class="text-gray-500 border-[1px] border-gray-200 text-xs inline-flex items-center px-2.5 py-0.5 dark:text-gray-300 rounded-full"
|
||||
use:tippy={{
|
||||
content: `The channel has been added to our blocklist due to the claims of the copyright holder: ${blocklistRefs}`,
|
||||
allowHTML: true,
|
||||
placement: 'right',
|
||||
interactive: true
|
||||
}}
|
||||
href={channel.blocklist_ref}
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
Blocked
|
||||
</div>
|
|
@ -4,6 +4,8 @@
|
|||
import GuidesPopup from './GuidesPopup.svelte'
|
||||
import ChannelPopup from './ChannelPopup.svelte'
|
||||
import Checkbox from './Checkbox.svelte'
|
||||
import BlockedBadge from './BlockedBadge.svelte'
|
||||
import ClosedBadge from './ClosedBadge.svelte'
|
||||
import { downloadMode, selected, query } from '~/store'
|
||||
import { fade } from 'svelte/transition'
|
||||
|
||||
|
@ -107,20 +109,10 @@
|
|||
</a>
|
||||
<div class="flex space-x-2">
|
||||
{#if channel.is_closed}
|
||||
<div
|
||||
class="text-gray-500 border-[1px] border-gray-200 text-xs inline-flex items-center px-2.5 py-0.5 dark:text-gray-300 cursor-default rounded-full"
|
||||
title="closed: {channel.closed}"
|
||||
>
|
||||
Closed
|
||||
</div>
|
||||
<ClosedBadge {channel} />
|
||||
{/if}
|
||||
{#if channel.is_blocked}
|
||||
<div
|
||||
class="text-gray-500 border-[1px] border-gray-200 text-xs inline-flex items-center px-2.5 py-0.5 dark:text-gray-300 cursor-default rounded-full"
|
||||
title="The channel has been added to our blocklist due to the claim of the copyright holder"
|
||||
>
|
||||
Blocked
|
||||
</div>
|
||||
<BlockedBadge {channel} />
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
import EditButton from '~/components/EditButton.svelte'
|
||||
import Divider from '~/components/Divider.svelte'
|
||||
import CloseButton from '~/components/CloseButton.svelte'
|
||||
import BlockedBadge from './BlockedBadge.svelte'
|
||||
import ClosedBadge from './ClosedBadge.svelte'
|
||||
import { getContext } from 'svelte'
|
||||
|
||||
export let channel
|
||||
|
@ -26,20 +28,10 @@
|
|||
<h3 class="text-l font-medium text-gray-900 dark:text-white">{channel.displayName}</h3>
|
||||
<div class="flex space-x-2">
|
||||
{#if channel.is_closed}
|
||||
<div
|
||||
class="text-gray-500 border-[1px] border-gray-200 text-xs inline-flex items-center px-2.5 py-0.5 dark:text-gray-300 cursor-default rounded-full h-6"
|
||||
title="closed: {channel.closed}"
|
||||
>
|
||||
Closed
|
||||
</div>
|
||||
<ClosedBadge {channel} />
|
||||
{/if}
|
||||
{#if channel.is_blocked}
|
||||
<div
|
||||
class="text-gray-500 border-[1px] border-gray-200 text-xs inline-flex items-center px-2.5 py-0.5 dark:text-gray-300 cursor-default rounded-full h-6"
|
||||
title="The channel has been added to our blocklist due to the claim of the copyright holder"
|
||||
>
|
||||
Blocked
|
||||
</div>
|
||||
<BlockedBadge {channel} />
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
|
17
src/components/ClosedBadge.svelte
Normal file
17
src/components/ClosedBadge.svelte
Normal file
|
@ -0,0 +1,17 @@
|
|||
<script>
|
||||
import tippy from 'sveltejs-tippy'
|
||||
|
||||
export let channel
|
||||
</script>
|
||||
|
||||
<div
|
||||
class="text-gray-500 border-[1px] border-gray-200 text-xs inline-flex items-center px-2.5 py-0.5 dark:text-gray-300 cursor-default rounded-full"
|
||||
use:tippy={{
|
||||
content: `closed: ${channel.closed}`,
|
||||
allowHTML: true,
|
||||
placement: 'right',
|
||||
interactive: true
|
||||
}}
|
||||
>
|
||||
Closed
|
||||
</div>
|
|
@ -177,6 +177,9 @@ export function transformChannel(channel, data) {
|
|||
channel.is_blocked = !!data.blocklist[channel.id]
|
||||
channel.streams = channel._streams.length
|
||||
channel.guides = channel._guides.length
|
||||
channel.blocklist_records = Array.isArray(data.blocklist[channel.id])
|
||||
? data.blocklist[channel.id]
|
||||
: []
|
||||
|
||||
const isChannelNameRepeated = data.nameIndex[channel.name.toLowerCase()].length > 1
|
||||
channel.displayName = isChannelNameRepeated
|
||||
|
|
19
yarn.lock
19
yarn.lock
|
@ -79,6 +79,11 @@
|
|||
resolved "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz"
|
||||
integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==
|
||||
|
||||
"@popperjs/core@^2.1.0":
|
||||
version "2.11.8"
|
||||
resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz"
|
||||
integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
|
||||
|
||||
"@sveltejs/adapter-static@^2.0.1":
|
||||
version "2.0.1"
|
||||
resolved "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-2.0.1.tgz"
|
||||
|
@ -897,6 +902,13 @@ svelte-sitemap@^2.6.0:
|
|||
resolved "https://registry.npmjs.org/svelte/-/svelte-3.55.1.tgz"
|
||||
integrity sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ==
|
||||
|
||||
sveltejs-tippy@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.npmjs.org/sveltejs-tippy/-/sveltejs-tippy-3.0.0.tgz"
|
||||
integrity sha512-LAfQikm61AeqZW1hCFWUsmGEMmhMHDvrPV0JhbT38Ell9SqBjmFaY//+YKUxaJvx6nLMxGQdlcHA1rDg2Ml8tQ==
|
||||
dependencies:
|
||||
tippy.js "~6.0.1"
|
||||
|
||||
tailwind-scrollbar-hide@^1.1.7:
|
||||
version "1.1.7"
|
||||
resolved "https://registry.npmjs.org/tailwind-scrollbar-hide/-/tailwind-scrollbar-hide-1.1.7.tgz"
|
||||
|
@ -939,6 +951,13 @@ tiny-glob@^0.2.9:
|
|||
globalyzer "0.1.0"
|
||||
globrex "^0.1.2"
|
||||
|
||||
tippy.js@~6.0.1:
|
||||
version "6.0.3"
|
||||
resolved "https://registry.npmjs.org/tippy.js/-/tippy.js-6.0.3.tgz"
|
||||
integrity sha512-buQF6HugTA4YeSA/s9xBhu0ferEAx7sRSn45G+Juh3p+Dz3vEKfxtqdg6JUnHIWDCV/r0u8Lrobs9AB4dtYcUQ==
|
||||
dependencies:
|
||||
"@popperjs/core" "^2.1.0"
|
||||
|
||||
to-regex-range@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue