diff --git a/settings/Controller/AppSettingsController.php b/settings/Controller/AppSettingsController.php index 8e72b5ab2db..5aaee1871db 100644 --- a/settings/Controller/AppSettingsController.php +++ b/settings/Controller/AppSettingsController.php @@ -521,6 +521,18 @@ class AppSettingsController extends Controller { foreach ($appIds as $appId) { $appId = OC_App::cleanAppId($appId); + + // Check if app is already downloaded + /** @var Installer $installer */ + $installer = \OC::$server->query(Installer::class); + $isDownloaded = $installer->isDownloaded($appId); + + if(!$isDownloaded) { + $installer->downloadApp($appId); + } + + $installer->installApp($appId); + if (count($groups) > 0) { $this->appManager->enableAppForGroups($appId, $this->getGroupList($groups)); } else { @@ -575,7 +587,9 @@ class AppSettingsController extends Controller { */ public function uninstallApp(string $appId): JSONResponse { $appId = OC_App::cleanAppId($appId); - $result = OC_App::removeApp($appId); + /** @var Installer $installer */ + $installer = \OC::$server->query(\OC\Installer::class); + $result = $installer->removeApp($appId); if($result !== false) { // FIXME: Clear the cache - move that into some sane helper method \OC::$server->getMemCacheFactory()->createDistributed('settings')->remove('listApps-0');