diff --git a/app/lib/pages/apps/providers/add_app_provider.dart b/app/lib/pages/apps/providers/add_app_provider.dart index 43fb375ff5b..91f9172f1b7 100644 --- a/app/lib/pages/apps/providers/add_app_provider.dart +++ b/app/lib/pages/apps/providers/add_app_provider.dart @@ -76,11 +76,8 @@ class AddAppProvider extends ChangeNotifier { bool isUpdating = false; bool isSubmitting = false; bool isValid = false; - bool hasChanges = false; bool isGenratingDescription = false; - App? _originalApp; - bool allowPaidApps = false; // API Keys @@ -217,9 +214,7 @@ class AddAppProvider extends ChangeNotifier { thumbnailUrls = app.thumbnailUrls; thumbnailIds = app.thumbnailIds; - _originalApp = app; isValid = false; - hasChanges = false; setIsLoading(false); notifyListeners(); } @@ -343,36 +338,49 @@ class AddAppProvider extends ChangeNotifier { } bool hasDataChanged(App app, String category) { - if (imageFile != null) return true; - if (appNameController.text != app.name.decodeString) return true; - if (appDescriptionController.text != app.description.decodeString) return true; - if (makeAppPublic != !app.private) return true; - if (appCategory != category) return true; - if (!listEquals( - selectedCapabilities.map((c) => c.id).toList()..sort(), - app.capabilities.map((c) => c.id).toList()..sort(), - )) return true; + if (imageFile != null) { + return true; + } + if (appNameController.text != app.name) { + return true; + } + if (appDescriptionController.text != app.description) { + return true; + } + if (makeAppPublic != !app.private) { + return true; + } + if (appCategory != category) { + return true; + } + if (selectedCapabilities.length != app.capabilities.length) { + return true; + } if (app.externalIntegration != null) { - if (triggerEvent != app.externalIntegration!.triggersOn) return true; - if (webhookUrlController.text != (app.externalIntegration!.webhookUrl ?? '')) return true; - if (setupCompletedController.text != (app.externalIntegration!.setupCompletedUrl ?? '')) return true; - if (instructionsController.text != (app.externalIntegration!.setupInstructionsFilePath ?? '')) return true; - if (appHomeUrlController.text != (app.externalIntegration!.appHomeUrl ?? '')) return true; - if (chatToolsManifestUrlController.text != (app.externalIntegration!.chatToolsManifestUrl ?? '')) return true; - } - if (chatPromptController.text != (app.chatPrompt ?? '').decodeString) return true; - if (conversationPromptController.text != (app.conversationPrompt ?? '').decodeString) return true; - if (sourceCodeUrlController.text != (app.sourceCodeUrl ?? '')) return true; - if (isPaid != app.isPaid) return true; - if (selectePaymentPlan != app.paymentPlan) return true; - if (priceController.text != app.price.toString()) return true; - if (!listEquals(thumbnailIds, app.thumbnailIds)) return true; + if (triggerEvent != app.externalIntegration!.triggersOn) { + return true; + } + if (webhookUrlController.text != app.externalIntegration!.webhookUrl) { + return true; + } + if (setupCompletedController.text != app.externalIntegration!.setupCompletedUrl) { + return true; + } + if (instructionsController.text != app.externalIntegration!.setupInstructionsFilePath) { + return true; + } + } + if (chatPromptController.text != app.chatPrompt) { + return true; + } + if (conversationPromptController.text != app.conversationPrompt) { + return true; + } return false; } void checkValidity() { isValid = isFormValid(); - hasChanges = _originalApp != null && hasDataChanged(_originalApp!, _originalApp!.category); notifyListeners(); } diff --git a/app/lib/pages/apps/update_app.dart b/app/lib/pages/apps/update_app.dart index 08f4a475493..abdd6fcd6fa 100644 --- a/app/lib/pages/apps/update_app.dart +++ b/app/lib/pages/apps/update_app.dart @@ -464,7 +464,7 @@ class _UpdateAppPageState extends State { ), ), child: GestureDetector( - onTap: !provider.isValid || !provider.hasChanges + onTap: !provider.isValid ? null : () { var isValid = provider.validateForm(); @@ -488,12 +488,12 @@ class _UpdateAppPageState extends State { ); } }, - child: Container( - padding: const EdgeInsets.all(12.0), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(12.0), - color: provider.isValid && provider.hasChanges ? Colors.white : Colors.grey.shade700, - ), + child: Container( + padding: const EdgeInsets.all(12.0), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12.0), + color: provider.isValid ? Colors.white : Colors.grey.shade700, + ), child: Text( context.l10n.updateApp, style: const TextStyle(color: Colors.black, fontSize: 16),