[fix]: Avoid duplicate repo entries
This commit is contained in:
@@ -121,26 +121,30 @@ class _RepositoriesScreenState extends State<RepositoriesScreen> {
|
|||||||
onChanged: (newValue) async {
|
onChanged: (newValue) async {
|
||||||
if (newValue) {
|
if (newValue) {
|
||||||
// Add the preset
|
// Add the preset
|
||||||
await _runRepositoryActionWithDialog(
|
final repoProvider = context
|
||||||
context,
|
.read<RepositoriesProvider>();
|
||||||
() async {
|
await repoProvider.addRepository(
|
||||||
final repoProvider = context
|
preset['name']!,
|
||||||
.read<RepositoriesProvider>();
|
preset['url']!,
|
||||||
final apiService = context
|
|
||||||
.read<FDroidApiService>();
|
|
||||||
final appProvider = context
|
|
||||||
.read<AppProvider>();
|
|
||||||
|
|
||||||
await repoProvider.addRepository(
|
|
||||||
preset['name']!,
|
|
||||||
preset['url']!,
|
|
||||||
);
|
|
||||||
await apiService.clearRepositoryCache();
|
|
||||||
await appProvider.refreshAll(
|
|
||||||
repositoriesProvider: repoProvider,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
|
// Only proceed with modal and refresh if addition succeeded (no error)
|
||||||
|
if (repoProvider.error == null &&
|
||||||
|
context.mounted) {
|
||||||
|
await _runRepositoryActionWithDialog(
|
||||||
|
context,
|
||||||
|
() async {
|
||||||
|
final apiService = context
|
||||||
|
.read<FDroidApiService>();
|
||||||
|
final appProvider = context
|
||||||
|
.read<AppProvider>();
|
||||||
|
|
||||||
|
await apiService.clearRepositoryCache();
|
||||||
|
await appProvider.refreshAll(
|
||||||
|
repositoriesProvider: repoProvider,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Remove the preset
|
// Remove the preset
|
||||||
Repository? addedRepo;
|
Repository? addedRepo;
|
||||||
@@ -153,25 +157,28 @@ class _RepositoriesScreenState extends State<RepositoriesScreen> {
|
|||||||
addedRepo = null;
|
addedRepo = null;
|
||||||
}
|
}
|
||||||
if (addedRepo != null) {
|
if (addedRepo != null) {
|
||||||
await _runRepositoryActionWithDialog(
|
final repoProvider = context
|
||||||
context,
|
.read<RepositoriesProvider>();
|
||||||
() async {
|
repoProvider.deleteRepository(addedRepo.id);
|
||||||
final repoProvider = context
|
// Only proceed with modal and refresh if deletion succeeded (no error)
|
||||||
.read<RepositoriesProvider>();
|
if (repoProvider.error == null &&
|
||||||
final apiService = context
|
context.mounted) {
|
||||||
.read<FDroidApiService>();
|
await _runRepositoryActionWithDialog(
|
||||||
final appProvider = context
|
context,
|
||||||
.read<AppProvider>();
|
() async {
|
||||||
|
final apiService = context
|
||||||
|
.read<FDroidApiService>();
|
||||||
|
final appProvider = context
|
||||||
|
.read<AppProvider>();
|
||||||
|
|
||||||
repoProvider.deleteRepository(
|
await apiService
|
||||||
addedRepo!.id,
|
.clearRepositoryCache();
|
||||||
);
|
await appProvider.refreshAll(
|
||||||
await apiService.clearRepositoryCache();
|
repositoriesProvider: repoProvider,
|
||||||
await appProvider.refreshAll(
|
);
|
||||||
repositoriesProvider: repoProvider,
|
},
|
||||||
);
|
);
|
||||||
},
|
}
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -338,26 +345,32 @@ class _RepositoriesScreenState extends State<RepositoriesScreen> {
|
|||||||
onAdd: (name, url) async {
|
onAdd: (name, url) async {
|
||||||
// Close the add dialog, then run the add flow with a blocking progress dialog.
|
// Close the add dialog, then run the add flow with a blocking progress dialog.
|
||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
await _runRepositoryActionWithDialog(context, () async {
|
final repoProvider = context.read<RepositoriesProvider>();
|
||||||
final repoProvider = context.read<RepositoriesProvider>();
|
await repoProvider.addRepository(name, url);
|
||||||
final apiService = context.read<FDroidApiService>();
|
// Only proceed with modal and refresh if addition succeeded (no error)
|
||||||
final appProvider = context.read<AppProvider>();
|
if (repoProvider.error == null && context.mounted) {
|
||||||
|
await _runRepositoryActionWithDialog(context, () async {
|
||||||
|
final apiService = context.read<FDroidApiService>();
|
||||||
|
final appProvider = context.read<AppProvider>();
|
||||||
|
|
||||||
await repoProvider.addRepository(name, url);
|
await apiService.clearRepositoryCache();
|
||||||
await apiService.clearRepositoryCache();
|
await appProvider.refreshAll(repositoriesProvider: repoProvider);
|
||||||
await appProvider.refreshAll(repositoriesProvider: repoProvider);
|
});
|
||||||
});
|
}
|
||||||
},
|
},
|
||||||
onAddPreset: (name, url) async {
|
onAddPreset: (name, url) async {
|
||||||
await _runRepositoryActionWithDialog(context, () async {
|
final repoProvider = context.read<RepositoriesProvider>();
|
||||||
final repoProvider = context.read<RepositoriesProvider>();
|
await repoProvider.addRepository(name, url);
|
||||||
final apiService = context.read<FDroidApiService>();
|
// Only proceed with modal and refresh if addition succeeded (no error)
|
||||||
final appProvider = context.read<AppProvider>();
|
if (repoProvider.error == null && context.mounted) {
|
||||||
|
await _runRepositoryActionWithDialog(context, () async {
|
||||||
|
final apiService = context.read<FDroidApiService>();
|
||||||
|
final appProvider = context.read<AppProvider>();
|
||||||
|
|
||||||
await repoProvider.addRepository(name, url);
|
await apiService.clearRepositoryCache();
|
||||||
await apiService.clearRepositoryCache();
|
await appProvider.refreshAll(repositoriesProvider: repoProvider);
|
||||||
await appProvider.refreshAll(repositoriesProvider: repoProvider);
|
});
|
||||||
});
|
}
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user