You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Importar backup logado = envia pra nuvem com dedupe
Quando ha sessao na nuvem, "Importar dados" passa a SOMAR o backup a
conta (via migrarLocalParaNuvem, casando categorias por nome) em vez de
substituir o aparelho. Sem login, mantem o comportamento antigo (local).
Tambem serve pra trazer os dados de um aparelho publicado pra conta.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: src/App.jsx
+23-7Lines changed: 23 additions & 7 deletions
Original file line number
Diff line number
Diff line change
@@ -3001,17 +3001,33 @@ export default function App() {
3001
3001
functionimportData(file){
3002
3002
if(!file)return;
3003
3003
constreader=newFileReader();
3004
-
reader.onload=()=>{
3004
+
reader.onload=async()=>{
3005
3005
try{
3006
3006
constparsed=JSON.parse(reader.result);
3007
3007
constdados=normalizarDados(parsed);
3008
3008
if(!dados)thrownewError("estrutura inválida");
3009
-
if(!window.confirm("Importar este backup? Os dados atuais deste aparelho serão substituídos pelos do arquivo."))return;
3010
-
dirtyRef.current=true;
3011
-
setData(dados);
3012
-
showToast("Backup importado ✓");
3013
-
}catch{
3014
-
showToast("Arquivo inválido. Use um backup exportado pelo próprio app.",true);
3009
+
3010
+
if(modoNuvemRef.current&&userId){
3011
+
// Logado na nuvem: SOMA o backup à conta com dedupe (categorias
3012
+
// iguais por nome não duplicam), em vez de substituir o aparelho.
3013
+
if(!window.confirm("Enviar este backup para a sua conta na nuvem?\n\nEle será somado ao que já existe — categorias com o mesmo nome não duplicam, e nada é apagado."))return;
0 commit comments