feat(vip): Tunesien (TN) als VIP-Land + kuratierte Starter-Liste
TN-User fielen bisher mangels TN-Liste auf die DE-Liste zurück. Jetzt eigene (kurze) TN-Starter-Liste: mbet216.com, 2xbet365.com, cesar365.com, icombet.com, unibet365.net (von einem TN-Test-User gemeldet). TN in COUNTRY_KEYS (webcontent-Endpoint) + VIP_COUNTRIES (Geräte-Region- Auflösung + Add-Check). Native Region-Logik ist generisch (Locale.region → JSON-Key) — kein Native-Code nötig. gambling-domains.json _meta v3. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
48a8bbc4af
commit
f555c5e4d8
@ -12,7 +12,7 @@ import { apiFetch } from '../lib/api';
|
||||
* Filter nutzt (`Locale.current.region`).
|
||||
*/
|
||||
|
||||
const VIP_COUNTRIES = ['DE', 'GB', 'FR'] as const;
|
||||
const VIP_COUNTRIES = ['DE', 'GB', 'FR', 'TN'] as const;
|
||||
export type VipCountry = (typeof VIP_COUNTRIES)[number];
|
||||
|
||||
/** Geräte-Region → unterstützter VIP-Ländercode. Fallback DE. */
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"_comment": "STARTER — kuratierte Starter-Liste der bekanntesten Gambling-Domains pro Land. NICHT die Endliste. Die finale, traffic-rangbasierte Kuratierung (via Similarweb-Ranking / GGL-Whitelist für DE) ist noch offen. Apple-Hartlimit: max. 50 Domains pro Land — diese Grenze darf NIE überschritten werden. Schlüssel = ISO-3166-1-alpha-2-Ländercode (Locale.current.region). Werte = registrierbare Domains ohne Schema/Subdomain (ManagedSettings WebDomain matched die Domain inkl. Subdomains).",
|
||||
"_meta": {
|
||||
"version": 2,
|
||||
"version": 3,
|
||||
"updatedAt": "2026-05-22",
|
||||
"maxDomainsPerCountry": 50,
|
||||
"status": "starter"
|
||||
@ -97,5 +97,12 @@
|
||||
"lucien-barriere.com",
|
||||
"casinobarriere.com",
|
||||
"circus.be"
|
||||
],
|
||||
"TN": [
|
||||
"mbet216.com",
|
||||
"2xbet365.com",
|
||||
"cesar365.com",
|
||||
"icombet.com",
|
||||
"unibet365.net"
|
||||
]
|
||||
}
|
||||
|
||||
@ -16,15 +16,13 @@ const DOMAIN_RE = /^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])
|
||||
|
||||
// Kuratierte Layer-2-VIP-Listen pro Land (gambling-domains.json).
|
||||
const CURATED_LISTS = gamblingDomains as unknown as Record<string, string[]>;
|
||||
const VIP_COUNTRIES = ["DE", "GB", "FR"] as const;
|
||||
const VIP_COUNTRIES = ["DE", "GB", "FR", "TN"] as const;
|
||||
|
||||
// Die VIP-Layer-2-Liste fasst max. 50 Domains; 20 davon sind für die
|
||||
// kuratierte Liste reserviert (RESERVED_CURATED in webcontent-domains.get.ts)
|
||||
// → max. 30 eigene Custom-Domains. Wird die überschritten, greift der
|
||||
// VIP-Slot-Replace-Flow (Swap mit 24h-Cooldown).
|
||||
// ⚠️ TEMP-TEST-WERT: 3 statt 30 — damit der Swap-Dialog schon ab der
|
||||
// 4. Web-Domain triggert. NACH DEM TEST auf 30 ZURÜCKSETZEN!
|
||||
const MAX_VIP_CUSTOM = 3;
|
||||
const MAX_VIP_CUSTOM = 30;
|
||||
const SWAP_COOLDOWN_MS = 24 * 60 * 60 * 1000;
|
||||
|
||||
/** Client-`country` (Geräte-Region) → unterstützter VIP-Ländercode. Fallback DE. */
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import gamblingDomains from "../../data/gambling-domains.json";
|
||||
import { getWebCustomDomains } from "../../db/domains";
|
||||
|
||||
const COUNTRY_KEYS = ["DE", "GB", "FR"] as const;
|
||||
const COUNTRY_KEYS = ["DE", "GB", "FR", "TN"] as const;
|
||||
type CountryKey = (typeof COUNTRY_KEYS)[number];
|
||||
|
||||
const GLOBAL_LISTS = gamblingDomains as unknown as Record<string, string[]>;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"_meta": {
|
||||
"version": 2,
|
||||
"version": 3,
|
||||
"updatedAt": "2026-05-22",
|
||||
"maxDomainsPerCountry": 50,
|
||||
"status": "starter"
|
||||
@ -96,5 +96,12 @@
|
||||
"lucien-barriere.com",
|
||||
"casinobarriere.com",
|
||||
"circus.be"
|
||||
],
|
||||
"TN": [
|
||||
"mbet216.com",
|
||||
"2xbet365.com",
|
||||
"cesar365.com",
|
||||
"icombet.com",
|
||||
"unibet365.net"
|
||||
]
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user