1
0
mirror of https://github.com/flarum/core.git synced 2025-07-16 14:26:25 +02:00

Extension state exceptions

This commit is contained in:
SychO9
2021-09-29 11:03:13 +01:00
parent e19c9ea67c
commit 77f0dca47e
10 changed files with 101 additions and 11 deletions

View File

@ -13,6 +13,8 @@ use SychO\PackageManager\Exception\ComposerCommandFailedException;
use SychO\PackageManager\Exception\ComposerCommandFailedExceptionHandler; use SychO\PackageManager\Exception\ComposerCommandFailedExceptionHandler;
use SychO\PackageManager\Exception\ComposerRequireFailedException; use SychO\PackageManager\Exception\ComposerRequireFailedException;
use SychO\PackageManager\Exception\ComposerUpdateFailedException; use SychO\PackageManager\Exception\ComposerUpdateFailedException;
use SychO\PackageManager\Exception\ExtensionAlreadyInstalledException;
use SychO\PackageManager\Exception\ExtensionNotInstalledException;
return [ return [
(new Extend\Routes('api')) (new Extend\Routes('api'))
@ -44,5 +46,9 @@ return [
(new Extend\ErrorHandling) (new Extend\ErrorHandling)
->handler(ComposerCommandFailedException::class, ComposerCommandFailedExceptionHandler::class) ->handler(ComposerCommandFailedException::class, ComposerCommandFailedExceptionHandler::class)
->handler(ComposerRequireFailedException::class, ComposerCommandFailedExceptionHandler::class) ->handler(ComposerRequireFailedException::class, ComposerCommandFailedExceptionHandler::class)
->handler(ComposerUpdateFailedException::class, ComposerCommandFailedExceptionHandler::class), ->handler(ComposerUpdateFailedException::class, ComposerCommandFailedExceptionHandler::class)
->type(ExtensionAlreadyInstalledException::class, 'extension_already_installed')
->status('extension_already_installed', 409)
->type(ExtensionNotInstalledException::class, 'extension_not_installed')
->status('extension_not_installed', 409),
]; ];

View File

@ -646,13 +646,30 @@ __webpack_require__.r(__webpack_exports__);
/* harmony default export */ __webpack_exports__["default"] = (function (e) { /* harmony default export */ __webpack_exports__["default"] = (function (e) {
var error = e.response.errors[0]; var error = e.response.errors[0];
if (error.code !== 'composer_command_failure') { if (!['composer_command_failure', 'extension_already_installed', 'extension_not_installed'].includes(error.code)) {
throw e; throw e;
} }
flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.modal.show(_components_ComposerFailureModal__WEBPACK_IMPORTED_MODULE_1__["default"], { switch (error.code) {
error: error case 'composer_command_failure':
}); flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.modal.show(_components_ComposerFailureModal__WEBPACK_IMPORTED_MODULE_1__["default"], {
error: error
});
break;
case 'extension_already_installed':
flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.alerts.show({
type: 'error'
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.translator.trans('sycho-package-manager.admin.exceptions.extension_already_installed'));
flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.modal.close();
break;
case 'extension_not_installed':
flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.alerts.show({
type: 'error'
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.translator.trans('sycho-package-manager.admin.exceptions.extension_not_installed'));
flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.modal.close();
}
}); });
/***/ }), /***/ }),

File diff suppressed because one or more lines are too long

View File

@ -4,9 +4,22 @@ import ComposerFailureModal from "../components/ComposerFailureModal";
export default function (e: any) { export default function (e: any) {
const error = e.response.errors[0]; const error = e.response.errors[0];
if (error.code !== 'composer_command_failure') { if (!['composer_command_failure', 'extension_already_installed', 'extension_not_installed'].includes(error.code)) {
throw e; throw e;
} }
app.modal.show(ComposerFailureModal, { error }); switch (error.code) {
case 'composer_command_failure':
app.modal.show(ComposerFailureModal, { error });
break;
case 'extension_already_installed':
app.alerts.show({ type: 'error' }, app.translator.trans('sycho-package-manager.admin.exceptions.extension_already_installed'));
app.modal.close();
break;
case 'extension_not_installed':
app.alerts.show({ type: 'error' }, app.translator.trans('sycho-package-manager.admin.exceptions.extension_not_installed'));
app.modal.close();
}
} }

View File

@ -1,5 +1,9 @@
sycho-package-manager: sycho-package-manager:
admin: admin:
exceptions:
extension_already_installed: Extension is already installed.
extension_not_installed: Extension not found.
extensions: extensions:
install: Install a new extension install: Install a new extension
install_help: Fill in the extension package name to proceed. Visit {extiverse} to browse extensions. install_help: Fill in the extension package name to proceed. Visit {extiverse} to browse extensions.

View File

@ -9,6 +9,7 @@ namespace SychO\PackageManager\Command;
use Composer\Console\Application; use Composer\Console\Application;
use Flarum\Extension\ExtensionManager; use Flarum\Extension\ExtensionManager;
use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Events\Dispatcher;
use SychO\PackageManager\Exception\ExtensionNotInstalledException;
use SychO\PackageManager\Extension\Event\Removed; use SychO\PackageManager\Extension\Event\Removed;
use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Output\BufferedOutput; use Symfony\Component\Console\Output\BufferedOutput;
@ -48,7 +49,7 @@ class RemoveExtensionHandler
$extension = $this->extensions->getExtension($command->extensionId); $extension = $this->extensions->getExtension($command->extensionId);
if (empty($extension)) { if (empty($extension)) {
// ... exception throw new ExtensionNotInstalledException($command->extensionId);
} }
$output = new BufferedOutput(); $output = new BufferedOutput();

View File

@ -10,6 +10,7 @@ use Composer\Console\Application;
use Flarum\Extension\ExtensionManager; use Flarum\Extension\ExtensionManager;
use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Events\Dispatcher;
use SychO\PackageManager\Exception\ComposerRequireFailedException; use SychO\PackageManager\Exception\ComposerRequireFailedException;
use SychO\PackageManager\Exception\ExtensionAlreadyInstalledException;
use SychO\PackageManager\Extension\Event\Installed; use SychO\PackageManager\Extension\Event\Installed;
use SychO\PackageManager\Extension\ExtensionUtils; use SychO\PackageManager\Extension\ExtensionUtils;
use SychO\PackageManager\RequirePackageValidator; use SychO\PackageManager\RequirePackageValidator;
@ -60,7 +61,7 @@ class RequireExtensionHandler
$extension = $this->extensions->getExtension($extensionId); $extension = $this->extensions->getExtension($extensionId);
if (! empty($extension)) { if (! empty($extension)) {
// ... exception throw new ExtensionAlreadyInstalledException($extension);
} }
$output = new BufferedOutput(); $output = new BufferedOutput();

View File

@ -11,6 +11,7 @@ use Flarum\Extension\ExtensionManager;
use Flarum\Settings\SettingsRepositoryInterface; use Flarum\Settings\SettingsRepositoryInterface;
use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Events\Dispatcher;
use SychO\PackageManager\Exception\ComposerUpdateFailedException; use SychO\PackageManager\Exception\ComposerUpdateFailedException;
use SychO\PackageManager\Exception\ExtensionNotInstalledException;
use SychO\PackageManager\Extension\Event\Updated; use SychO\PackageManager\Extension\Event\Updated;
use SychO\PackageManager\UpdateExtensionValidator; use SychO\PackageManager\UpdateExtensionValidator;
use SychO\PackageManager\LastUpdateCheck; use SychO\PackageManager\LastUpdateCheck;
@ -66,7 +67,7 @@ class UpdateExtensionHandler
$extension = $this->extensions->getExtension($command->extensionId); $extension = $this->extensions->getExtension($command->extensionId);
if (empty($extension)) { if (empty($extension)) {
// ... exception throw new ExtensionNotInstalledException($command->extensionId);
} }
$output = new BufferedOutput(); $output = new BufferedOutput();

View File

@ -0,0 +1,24 @@
<?php
/**
*
*/
namespace SychO\PackageManager\Exception;
use Exception;
use Flarum\Extension\Extension;
use Flarum\Foundation\KnownError;
class ExtensionAlreadyInstalledException extends Exception implements KnownError
{
public function __construct(Extension $extension)
{
parent::__construct("Extension {$extension->getTitle()} is already installed.");
}
public function getType(): string
{
return 'extension_already_installed';
}
}

View File

@ -0,0 +1,23 @@
<?php
/**
*
*/
namespace SychO\PackageManager\Exception;
use Exception;
use Flarum\Foundation\KnownError;
class ExtensionNotInstalledException extends Exception implements KnownError
{
public function __construct(string $extensionId)
{
parent::__construct("Extension {$extensionId} is not installed.");
}
public function getType(): string
{
return 'extension_not_installed';
}
}