Browse Source

Report captcha solves

pull/569/head
mrjvs 2 years ago
parent
commit
82d2516951
  1. 12
      src/backend/helpers/report.ts
  2. 12
      src/stores/turnstile/index.tsx

12
src/backend/helpers/report.ts

@ -9,6 +9,7 @@ import { PlayerMeta } from "@/stores/player/slices/source"; @@ -9,6 +9,7 @@ import { PlayerMeta } from "@/stores/player/slices/source";
// for anybody who cares - these are anonymous metrics.
// They are just used for figuring out if providers are broken or not
const metricsEndpoint = "https://backend.movie-web.app/metrics/providers";
const captchaMetricsEndpoint = "https://backend.movie-web.app/metrics/captcha";
const batchId = () => nanoid(32);
export type ProviderMetric = {
@ -136,8 +137,17 @@ export function scrapePartsToProviderMetric( @@ -136,8 +137,17 @@ export function scrapePartsToProviderMetric(
export function useReportProviders() {
const report = useCallback((items: ProviderMetric[]) => {
if (items.length === 0) return;
reportProviders(items);
reportProviders(items).catch(() => {});
}, []);
return { report };
}
export function reportCaptchaSolve(success: boolean) {
ofetch(captchaMetricsEndpoint, {
method: "POST",
body: {
success,
},
}).catch(() => {});
}

12
src/stores/turnstile/index.tsx

@ -2,6 +2,7 @@ import Turnstile, { BoundTurnstileObject } from "react-turnstile"; @@ -2,6 +2,7 @@ import Turnstile, { BoundTurnstileObject } from "react-turnstile";
import { create } from "zustand";
import { immer } from "zustand/middleware/immer";
import { reportCaptchaSolve } from "@/backend/helpers/report";
import { conf } from "@/setup/config";
export interface TurnstileStore {
@ -52,11 +53,18 @@ export function isTurnstileInitialized() { @@ -52,11 +53,18 @@ export function isTurnstileInitialized() {
return !!getTurnstile();
}
export function getTurnstileToken() {
export async function getTurnstileToken() {
const turnstile = getTurnstile();
turnstile?.reset();
turnstile?.execute();
return useTurnstileStore.getState().getToken();
try {
const token = await useTurnstileStore.getState().getToken();
reportCaptchaSolve(true);
return token;
} catch (err) {
reportCaptchaSolve(false);
throw err;
}
}
export function TurnstileProvider() {

Loading…
Cancel
Save