sem clerk
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import React, { useState, useRef } from 'react';
|
||||
import { Download, Upload, AlertTriangle, CheckCircle, Database, FileJson, Info, RefreshCw } from 'lucide-react';
|
||||
import api from '../../services/api';
|
||||
import { useOrganization } from '@clerk/clerk-react';
|
||||
import { useAuth } from '../../context/useAuth';
|
||||
|
||||
interface BackupStats {
|
||||
projects: number;
|
||||
@@ -28,7 +28,7 @@ interface BackupValidation {
|
||||
}
|
||||
|
||||
export const BackupRestore: React.FC = () => {
|
||||
const { organization } = useOrganization();
|
||||
const { appUser } = useAuth();
|
||||
const [isExporting, setIsExporting] = useState(false);
|
||||
const [isImporting, setIsImporting] = useState(false);
|
||||
const [validationResult, setValidationResult] = useState<BackupValidation | null>(null);
|
||||
@@ -36,7 +36,7 @@ export const BackupRestore: React.FC = () => {
|
||||
const fileInputRef = useRef<HTMLInputElement>(null);
|
||||
|
||||
const handleExport = async () => {
|
||||
if (!organization) return;
|
||||
if (!appUser) return;
|
||||
|
||||
setIsExporting(true);
|
||||
try {
|
||||
@@ -52,7 +52,7 @@ export const BackupRestore: React.FC = () => {
|
||||
|
||||
// Nome do arquivo com timestamp
|
||||
const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, -5);
|
||||
link.download = `backup_${organization.name}_${timestamp}.json`;
|
||||
link.download = `backup_gpi_${timestamp}.json`;
|
||||
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
@@ -148,8 +148,8 @@ export const BackupRestore: React.FC = () => {
|
||||
<div className="flex-1">
|
||||
<h3 className="text-lg font-bold text-text-main mb-2">Backup e Restauração de Dados</h3>
|
||||
<p className="text-sm text-text-muted leading-relaxed">
|
||||
Use esta ferramenta para criar cópias de segurança de todos os dados da organização ou restaurar dados de um backup anterior.
|
||||
<strong className="text-amber-500"> Os backups são específicos para cada organização e não podem ser restaurados em outras organizações.</strong>
|
||||
Use esta ferramenta para criar cópias de segurança de todos os dados do sistema ou restaurar dados de um backup anterior.
|
||||
<strong className="text-amber-500"> Os backups são específicos para cada instalação e podem não ser compatíveis entre versões diferentes se houver mudanças estruturais.</strong>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -191,7 +191,7 @@ export const BackupRestore: React.FC = () => {
|
||||
>
|
||||
{isExporting ? (
|
||||
<>
|
||||
<RefreshCw size={20} className="animate-spin" />
|
||||
<RefreshCw size={20} className="animate-spin" />
|
||||
Gerando Backup...
|
||||
</>
|
||||
) : (
|
||||
@@ -248,18 +248,18 @@ export const BackupRestore: React.FC = () => {
|
||||
</label>
|
||||
|
||||
{validationResult && (
|
||||
<div className={`p-4 rounded-xl border ${validationResult.valid && validationResult.isValidOrganization
|
||||
<div className={`p-4 rounded-xl border ${validationResult.valid
|
||||
? 'bg-green-500/10 border-green-500/30'
|
||||
: 'bg-red-500/10 border-red-500/30'
|
||||
}`}>
|
||||
<div className="flex items-start gap-3">
|
||||
{validationResult.valid && validationResult.isValidOrganization ? (
|
||||
{validationResult.valid ? (
|
||||
<CheckCircle size={20} className="text-green-400 flex-shrink-0 mt-0.5" />
|
||||
) : (
|
||||
<AlertTriangle size={20} className="text-red-400 flex-shrink-0 mt-0.5" />
|
||||
)}
|
||||
<div className="flex-1 space-y-2">
|
||||
<p className={`text-sm font-bold ${validationResult.valid && validationResult.isValidOrganization
|
||||
<p className={`text-sm font-bold ${validationResult.valid
|
||||
? 'text-green-400'
|
||||
: 'text-red-400'
|
||||
}`}>
|
||||
@@ -289,7 +289,7 @@ export const BackupRestore: React.FC = () => {
|
||||
|
||||
<button
|
||||
onClick={handleImport}
|
||||
disabled={!validationResult?.valid || !validationResult?.isValidOrganization || isImporting}
|
||||
disabled={!validationResult?.valid || isImporting}
|
||||
className="w-full flex items-center justify-center gap-2 px-6 py-4 bg-red-500 hover:bg-red-600 text-white rounded-xl font-bold transition-all disabled:opacity-50 disabled:cursor-not-allowed shadow-lg shadow-red-500/20"
|
||||
>
|
||||
{isImporting ? (
|
||||
|
||||
Reference in New Issue
Block a user