mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-12 23:45:18 +00:00
fix: use plugin author and name as slug
This commit is contained in:
parent
66cae6c7ac
commit
c0d50d441e
@ -1,4 +1,3 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:shadcn_flutter/shadcn_flutter.dart';
|
||||
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
|
||||
|
@ -26,7 +26,8 @@ class MetadataPluginRepositoryItem extends HookConsumerWidget {
|
||||
|
||||
return Card(
|
||||
child: Basic(
|
||||
title: Text(pluginRepo.name),
|
||||
title: Text(
|
||||
"${pluginRepo.owner == "KRTirtho" ? "" : "${pluginRepo.owner}/"}${pluginRepo.name}"),
|
||||
subtitle: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
|
@ -89,15 +89,15 @@ class MetadataPluginNotifier extends AsyncNotifier<MetadataPluginState> {
|
||||
}
|
||||
|
||||
Future<MetadataPluginState> toStatePlugins(
|
||||
List<MetadataPluginsTableData> plugins) async {
|
||||
List<MetadataPluginsTableData> plugins,
|
||||
) async {
|
||||
int defaultPlugin = -1;
|
||||
final pluginConfigs = plugins.mapIndexed(
|
||||
(index, plugin) {
|
||||
if (plugin.selected) {
|
||||
defaultPlugin = index;
|
||||
}
|
||||
final pluginConfigs = <PluginConfiguration>[];
|
||||
|
||||
return PluginConfiguration(
|
||||
for (int i = 0; i < plugins.length; i++) {
|
||||
final plugin = plugins[i];
|
||||
|
||||
final pluginConfig = PluginConfiguration(
|
||||
type: PluginType.metadata,
|
||||
name: plugin.name,
|
||||
author: plugin.author,
|
||||
@ -123,8 +123,26 @@ class MetadataPluginNotifier extends AsyncNotifier<MetadataPluginState> {
|
||||
.nonNulls
|
||||
.toList(),
|
||||
);
|
||||
},
|
||||
).toList();
|
||||
|
||||
final pluginExtractionDir = await _getPluginExtractionDir(pluginConfig);
|
||||
final pluginJsonFile =
|
||||
File(join(pluginExtractionDir.path, "plugin.json"));
|
||||
final pluginBinaryFile =
|
||||
File(join(pluginExtractionDir.path, "plugin.out"));
|
||||
|
||||
if (!await pluginExtractionDir.exists() ||
|
||||
!await pluginJsonFile.exists() ||
|
||||
!await pluginBinaryFile.exists()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
pluginConfigs.add(pluginConfig);
|
||||
|
||||
if (plugin.selected) {
|
||||
defaultPlugin = pluginConfigs.length - 1;
|
||||
}
|
||||
}
|
||||
|
||||
return MetadataPluginState(
|
||||
plugins: pluginConfigs,
|
||||
defaultPlugin: defaultPlugin,
|
||||
@ -207,7 +225,7 @@ class MetadataPluginNotifier extends AsyncNotifier<MetadataPluginState> {
|
||||
final pluginDir = await _getPluginRootDir();
|
||||
final pluginExtractionDirPath = join(
|
||||
pluginDir.path,
|
||||
"${ServiceUtils.sanitizeFilename(plugin.name)}-${plugin.version}",
|
||||
"${ServiceUtils.sanitizeFilename(plugin.author)}-${ServiceUtils.sanitizeFilename(plugin.name)}-${plugin.version}",
|
||||
);
|
||||
return Directory(pluginExtractionDirPath);
|
||||
}
|
||||
@ -314,7 +332,8 @@ class MetadataPluginNotifier extends AsyncNotifier<MetadataPluginState> {
|
||||
|
||||
final pluginRes = await (database.metadataPluginsTable.select()
|
||||
..where(
|
||||
(tbl) => tbl.name.equals(plugin.name),
|
||||
(tbl) =>
|
||||
tbl.name.equals(plugin.name) & tbl.author.equals(plugin.author),
|
||||
)
|
||||
..limit(1))
|
||||
.get();
|
||||
@ -344,8 +363,8 @@ class MetadataPluginNotifier extends AsyncNotifier<MetadataPluginState> {
|
||||
if (pluginExtractionDir.existsSync()) {
|
||||
await pluginExtractionDir.delete(recursive: true);
|
||||
}
|
||||
await database.metadataPluginsTable
|
||||
.deleteWhere((tbl) => tbl.name.equals(plugin.name));
|
||||
await database.metadataPluginsTable.deleteWhere((tbl) =>
|
||||
tbl.name.equals(plugin.name) & tbl.author.equals(plugin.author));
|
||||
}
|
||||
|
||||
Future<void> updatePlugin(
|
||||
@ -356,7 +375,8 @@ class MetadataPluginNotifier extends AsyncNotifier<MetadataPluginState> {
|
||||
final pluginUpdatedConfig =
|
||||
await downloadAndCachePlugin(update.downloadUrl);
|
||||
|
||||
if (pluginUpdatedConfig.name != plugin.name) {
|
||||
if (pluginUpdatedConfig.name != plugin.name &&
|
||||
pluginUpdatedConfig.author != plugin.author) {
|
||||
throw MetadataPluginException.invalidPluginConfiguration();
|
||||
}
|
||||
_assertPluginApiCompatibility(pluginUpdatedConfig);
|
||||
@ -375,7 +395,8 @@ class MetadataPluginNotifier extends AsyncNotifier<MetadataPluginState> {
|
||||
.write(const MetadataPluginsTableCompanion(selected: Value(false)));
|
||||
|
||||
await (database.metadataPluginsTable.update()
|
||||
..where((tbl) => tbl.name.equals(plugin.name)))
|
||||
..where((tbl) =>
|
||||
tbl.name.equals(plugin.name) & tbl.author.equals(plugin.author)))
|
||||
.write(
|
||||
const MetadataPluginsTableCompanion(selected: Value(true)),
|
||||
);
|
||||
|
Loading…
Reference in New Issue
Block a user