mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-22 16:11:13 -05:00
Fix remaining any types and enable strict mode
This commit is contained in:
@@ -18,6 +18,7 @@ import { setAuthMethod } from '@/lib/sessionFlags';
|
|||||||
import { validateEmailNotDisposable } from '@/lib/emailValidation';
|
import { validateEmailNotDisposable } from '@/lib/emailValidation';
|
||||||
import { getErrorMessage } from '@/lib/errorHandler';
|
import { getErrorMessage } from '@/lib/errorHandler';
|
||||||
import { logger } from '@/lib/logger';
|
import { logger } from '@/lib/logger';
|
||||||
|
import type { SignInOptions } from '@/types/supabase-auth';
|
||||||
|
|
||||||
interface AuthModalProps {
|
interface AuthModalProps {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
@@ -70,7 +71,7 @@ export function AuthModal({ open, onOpenChange, defaultTab = 'signin' }: AuthMod
|
|||||||
setSignInCaptchaToken(null);
|
setSignInCaptchaToken(null);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const signInOptions: any = {
|
const signInOptions: SignInOptions = {
|
||||||
email: formData.email,
|
email: formData.email,
|
||||||
password: formData.password,
|
password: formData.password,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -297,8 +297,9 @@ export function SubmissionReviewManager({
|
|||||||
description: `Successfully approved ${selectedItemIds.size} item(s)${requestId ? ` (Request: ${requestId.substring(0, 8)})` : ''}`,
|
description: `Successfully approved ${selectedItemIds.size} item(s)${requestId ? ` (Request: ${requestId.substring(0, 8)})` : ''}`,
|
||||||
});
|
});
|
||||||
|
|
||||||
const successCount = data.results.filter((r: any) => r.success).length;
|
interface ApprovalResult { success: boolean; item_id: string; error?: string }
|
||||||
const failCount = data.results.filter((r: any) => !r.success).length;
|
const successCount = data.results.filter((r: ApprovalResult) => r.success).length;
|
||||||
|
const failCount = data.results.filter((r: ApprovalResult) => !r.success).length;
|
||||||
|
|
||||||
const allFailed = failCount > 0 && successCount === 0;
|
const allFailed = failCount > 0 && successCount === 0;
|
||||||
const someFailed = failCount > 0 && successCount > 0;
|
const someFailed = failCount > 0 && successCount > 0;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import { supabase } from '@/integrations/supabase/client';
|
|||||||
import { logger } from '@/lib/logger';
|
import { logger } from '@/lib/logger';
|
||||||
import { getErrorMessage } from '@/lib/errorHandler';
|
import { getErrorMessage } from '@/lib/errorHandler';
|
||||||
import { MODERATION_CONSTANTS } from '@/lib/moderation/constants';
|
import { MODERATION_CONSTANTS } from '@/lib/moderation/constants';
|
||||||
|
import type { ModerationItem } from '@/types/moderation';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Profile data structure returned from the database
|
* Profile data structure returned from the database
|
||||||
@@ -143,7 +144,7 @@ export function useProfileCache() {
|
|||||||
* @param submissions - Array of submissions with user_id and reviewer_id
|
* @param submissions - Array of submissions with user_id and reviewer_id
|
||||||
* @returns Map of userId -> profile for all users involved
|
* @returns Map of userId -> profile for all users involved
|
||||||
*/
|
*/
|
||||||
const fetchForSubmissions = useCallback(async (submissions: any[]): Promise<Map<string, CachedProfile>> => {
|
const fetchForSubmissions = useCallback(async (submissions: ModerationItem[]): Promise<Map<string, CachedProfile>> => {
|
||||||
const userIds = submissions.map(s => s.user_id).filter(Boolean);
|
const userIds = submissions.map(s => s.user_id).filter(Boolean);
|
||||||
const reviewerIds = submissions.map(s => s.reviewer_id).filter((id): id is string => !!id);
|
const reviewerIds = submissions.map(s => s.reviewer_id).filter((id): id is string => !!id);
|
||||||
const allUserIds = [...new Set([...userIds, ...reviewerIds])];
|
const allUserIds = [...new Set([...userIds, ...reviewerIds])];
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import { logger } from '@/lib/logger';
|
|||||||
import { getErrorMessage } from '@/lib/errorHandler';
|
import { getErrorMessage } from '@/lib/errorHandler';
|
||||||
import { MODERATION_CONSTANTS } from '@/lib/moderation/constants';
|
import { MODERATION_CONSTANTS } from '@/lib/moderation/constants';
|
||||||
import type { RealtimeChannel, RealtimePostgresChangesPayload } from '@supabase/supabase-js';
|
import type { RealtimeChannel, RealtimePostgresChangesPayload } from '@supabase/supabase-js';
|
||||||
|
import type { Json } from '@/integrations/supabase/types';
|
||||||
import type { ModerationItem, EntityFilter, StatusFilter } from '@/types/moderation';
|
import type { ModerationItem, EntityFilter, StatusFilter } from '@/types/moderation';
|
||||||
import type { useEntityCache } from './useEntityCache';
|
import type { useEntityCache } from './useEntityCache';
|
||||||
import type { useProfileCache } from './useProfileCache';
|
import type { useProfileCache } from './useProfileCache';
|
||||||
@@ -176,7 +177,7 @@ export function useRealtimeSubscriptions(
|
|||||||
/**
|
/**
|
||||||
* Resolve entity names for a submission
|
* Resolve entity names for a submission
|
||||||
*/
|
*/
|
||||||
const resolveEntityNames = useCallback(async (submission: any) => {
|
const resolveEntityNames = useCallback(async (submission: { submission_type: string; content: Json }) => {
|
||||||
const content = submission.content as SubmissionContent;
|
const content = submission.content as SubmissionContent;
|
||||||
let entityName = content?.name || 'Unknown';
|
let entityName = content?.name || 'Unknown';
|
||||||
let parkName: string | undefined;
|
let parkName: string | undefined;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
|
import type { User } from '@supabase/supabase-js';
|
||||||
import { useAuth } from './useAuth';
|
import { useAuth } from './useAuth';
|
||||||
import { useUserRole } from './useUserRole';
|
import { useUserRole } from './useUserRole';
|
||||||
import { useRequireMFA } from './useRequireMFA';
|
import { useRequireMFA } from './useRequireMFA';
|
||||||
@@ -15,7 +16,7 @@ export interface AdminGuardState {
|
|||||||
needsMFA: boolean;
|
needsMFA: boolean;
|
||||||
|
|
||||||
/** Current authenticated user */
|
/** Current authenticated user */
|
||||||
user: any;
|
user: User | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -164,6 +164,9 @@ export interface ModerationItem {
|
|||||||
reviewed_at?: string;
|
reviewed_at?: string;
|
||||||
|
|
||||||
/** ID of the moderator who reviewed this item */
|
/** ID of the moderator who reviewed this item */
|
||||||
|
reviewer_id?: string;
|
||||||
|
|
||||||
|
/** Username of the moderator who reviewed this item */
|
||||||
reviewed_by?: string;
|
reviewed_by?: string;
|
||||||
|
|
||||||
/** Notes left by the reviewing moderator */
|
/** Notes left by the reviewing moderator */
|
||||||
|
|||||||
24
src/types/supabase-auth.ts
Normal file
24
src/types/supabase-auth.ts
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
/**
|
||||||
|
* Extended Supabase Auth Types
|
||||||
|
* Supabase auth methods accept options objects not fully typed in official SDK
|
||||||
|
*/
|
||||||
|
|
||||||
|
export interface SignInOptions {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
options?: {
|
||||||
|
captchaToken?: string;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface SignUpOptions {
|
||||||
|
email: string;
|
||||||
|
password: string;
|
||||||
|
options?: {
|
||||||
|
data?: {
|
||||||
|
username?: string;
|
||||||
|
display_name?: string;
|
||||||
|
};
|
||||||
|
captchaToken?: string;
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user