From 16f4e46738212cb83e56edd6183f5aee5486a777 Mon Sep 17 00:00:00 2001
From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com>
Date: Sun, 20 Oct 2024 15:24:29 +0200
Subject: [PATCH] #2732 feat(stacks): adding save rest methods to the stack
 service

---
 app/portainer/services/api/stackService.js | 31 +++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

diff --git a/app/portainer/services/api/stackService.js b/app/portainer/services/api/stackService.js
index abeb09165..ff49de2e8 100644
--- a/app/portainer/services/api/stackService.js
+++ b/app/portainer/services/api/stackService.js
@@ -327,7 +327,14 @@ angular.module('portainer.app').factory('StackService', [
       };
       return Stack.create({ endpointId: endpointId }, { method: 'string', type: 'standalone', ...payload }).$promise;
     };
-
+    service.saveComposeStackFromFileContent = function (name, stackFileContent, env, endpointId) {
+      var payload = {
+        Name: name,
+        StackFileContent: stackFileContent,
+        Env: env,
+      };
+      return Stack.save({ endpointId: endpointId }, { method: 'string', type: 'standalone', ...payload }).$promise;
+    };
     service.createSwarmStackFromFileContent = function (name, stackFileContent, env, endpointId) {
       var deferred = $q.defer();
 
@@ -350,6 +357,28 @@ angular.module('portainer.app').factory('StackService', [
 
       return deferred.promise;
     };
+    service.saveSwarmStackFromFileContent = function (name, stackFileContent, env, endpointId) {
+      var deferred = $q.defer();
+
+      SwarmService.swarm(endpointId)
+          .then(function success(swarm) {
+            var payload = {
+              Name: name,
+              SwarmID: swarm.ID,
+              StackFileContent: stackFileContent,
+              Env: env,
+            };
+            return Stack.save({ endpointId: endpointId }, { method: 'string', type: 'swarm', ...payload }).$promise;
+          })
+          .then(function success(data) {
+            deferred.resolve(data);
+          })
+          .catch(function error(err) {
+            deferred.reject({ msg: 'Unable to save the stack', err: err });
+          });
+
+      return deferred.promise;
+    };
 
     service.createComposeStackFromGitRepository = function (name, repositoryOptions, env, endpointId) {
       var payload = {