telegram-invite-automation/src/renderer/hooks/useAppTabGroups.js
2026-02-02 23:51:24 +04:00

286 lines
5.3 KiB
JavaScript

export default function useAppTabGroups({
selectedTaskId,
refreshQueue,
selectedTaskName,
taskForm,
setTaskForm,
activePreset,
applyTaskPreset,
formatAccountLabel,
accountById,
competitorText,
setCompetitorText,
applyRoleMode,
normalizeIntervals,
taskStatus,
perAccountInviteSum,
hasSelectedTask,
inviteAccessStatus,
inviteAccessCheckedAt,
formatTimestamp,
checkInviteAccess,
accounts,
showNotification,
copyToClipboard,
sanitizeTaskForm,
hasPerAccountInviteLimits,
fileImportResult,
importInviteFile,
fileImportForm,
setFileImportForm,
criticalErrorAccounts,
accountStatsMap,
settings,
membershipStatus,
assignedAccountMap,
accountBuckets,
filterFreeAccounts,
selectedAccountIds,
taskAccountRoles,
inviteAdminMasterId,
refreshMembership,
refreshIdentity,
formatAccountStatus,
resetCooldown,
deleteAccount,
updateAccountRole,
updateAccountInviteLimit,
setAccountRolesAll,
applyRolePreset,
removeAccountFromTask,
moveAccountToTask,
logsTab,
setLogsTab,
exportLogs,
clearLogs,
exportInvites,
exportProblemInvites,
exportFallback,
updateFallbackStatus,
clearFallback,
clearInvites,
logSearch,
setLogSearch,
logPage,
setLogPage,
logPageCount,
pagedLogs,
inviteSearch,
setInviteSearch,
invitePage,
setInvitePage,
invitePageCount,
inviteFilter,
setInviteFilter,
pagedInvites,
fallbackSearch,
setFallbackSearch,
fallbackPage,
setFallbackPage,
fallbackPageCount,
pagedFallback,
confirmQueue,
confirmSearch,
setConfirmSearch,
confirmPage,
setConfirmPage,
confirmPageCount,
pagedConfirmQueue,
queueItems,
queueStats,
queueSearch,
setQueueSearch,
queuePage,
setQueuePage,
queuePageCount,
pagedQueue,
clearConfirmQueue,
auditSearch,
setAuditSearch,
auditPage,
setAuditPage,
auditPageCount,
pagedAudit,
explainInviteError,
expandedInviteId,
setExpandedInviteId,
inviteStats,
invites,
selectedTask,
accessStatus,
roleSummary,
mutualContactDiagnostics,
accountEvents,
clearAccountEvents,
onSettingsChange,
saveSettings
}) {
const taskSettings = {
selectedTaskName,
taskForm,
setTaskForm,
activePreset,
applyTaskPreset,
formatAccountLabel,
accountById,
competitorText,
setCompetitorText,
roleMode: taskForm.requireSameBotInBoth ? "same" : "split",
applyRoleMode,
normalizeIntervals,
taskStatus,
perAccountInviteSum,
hasSelectedTask,
inviteAccessStatus,
inviteAccessCheckedAt,
formatTimestamp,
checkInviteAccess,
accounts,
showNotification,
copyToClipboard,
sanitizeTaskForm,
hasPerAccountInviteLimits,
fileImportResult,
importInviteFile,
fileImportForm,
setFileImportForm,
criticalErrorAccounts
};
const accountsTab = {
accounts,
accountStatsMap,
settings,
membershipStatus,
assignedAccountMap,
accountBuckets,
filterFreeAccounts,
selectedAccountIds,
taskAccountRoles,
rolesMode: taskForm.rolesMode,
setRolesMode: (mode) => {
setTaskForm((prev) => ({ ...prev, rolesMode: mode }));
if (mode === "auto") {
applyRolePreset("split");
}
},
hasSelectedTask,
inviteAdminMasterId,
refreshMembership,
refreshIdentity,
formatAccountStatus,
formatAccountLabel,
resetCooldown,
deleteAccount,
updateAccountRole,
updateAccountInviteLimit,
setAccountRolesAll,
applyRolePreset,
removeAccountFromTask,
moveAccountToTask
};
const logsTabGroup = {
logsTab,
setLogsTab,
hasSelectedTask,
exportLogs,
clearLogs,
exportInvites,
exportProblemInvites,
exportFallback,
updateFallbackStatus,
clearFallback,
clearInvites,
logSearch,
setLogSearch,
logPage,
setLogPage,
logPageCount,
pagedLogs,
inviteSearch,
setInviteSearch,
invitePage,
setInvitePage,
invitePageCount,
inviteFilter,
setInviteFilter,
pagedInvites,
fallbackSearch,
setFallbackSearch,
fallbackPage,
setFallbackPage,
fallbackPageCount,
pagedFallback,
confirmQueue,
confirmSearch,
setConfirmSearch,
confirmPage,
setConfirmPage,
confirmPageCount,
pagedConfirmQueue,
queueItems,
queueStats,
queueSearch,
setQueueSearch,
queuePage,
setQueuePage,
queuePageCount,
pagedQueue,
clearConfirmQueue,
auditSearch,
setAuditSearch,
auditPage,
setAuditPage,
auditPageCount,
pagedAudit,
explainInviteError,
expandedInviteId,
setExpandedInviteId,
inviteStats,
invites,
selectedTask,
accessStatus,
inviteAccessStatus,
selectedTaskName,
roleSummary,
mutualContactDiagnostics,
accountById,
formatAccountLabel
};
const queueTabGroup = {
selectedTaskId,
refreshQueue,
queueStats,
queueSearch,
setQueueSearch,
queuePage,
setQueuePage,
queuePageCount,
pagedQueue
};
const eventsTab = {
accountEvents,
formatTimestamp,
onClearEvents: clearAccountEvents,
accountById,
formatAccountLabel
};
const settingsTab = {
settings,
onSettingsChange,
saveSettings
};
return {
taskSettings,
accountsTab,
logsTab: logsTabGroup,
queueTab: queueTabGroup,
eventsTab,
settingsTab
};
}