diff --git a/composer.json b/composer.json index 232bfe2..6ddd7ad 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,7 @@ } ], "require": { - "flarum/core": "^1.2.0", + "flarum/core": "^1.3.1", "sentry/sdk": "^3.1.0" }, "authors": [ diff --git a/js/src/admin/index.ts b/js/src/admin/index.ts index ac21484..63bdb32 100644 --- a/js/src/admin/index.ts +++ b/js/src/admin/index.ts @@ -8,6 +8,11 @@ app.initializers.add('fof/sentry', () => { setting: 'fof-sentry.dsn', type: 'url', }) + .registerSetting({ + label: app.translator.trans('fof-sentry.admin.settings.environment_label'), + setting: 'fof-sentry.environment', + type: 'string', + }) .registerSetting({ label: app.translator.trans('fof-sentry.admin.settings.user_feedback_label'), setting: 'fof-sentry.user_feedback', diff --git a/resources/locale/en.yml b/resources/locale/en.yml index 26441df..37e86c5 100644 --- a/resources/locale/en.yml +++ b/resources/locale/en.yml @@ -2,6 +2,7 @@ fof-sentry: admin: settings: dsn_label: Sentry DSN + environment_label: Sentry Environment user_feedback_label: User Feedback javascript_label: Report JavaScript Errors javascript_console_label: Capture JavaScript Console diff --git a/src/Content/SentryJavaScript.php b/src/Content/SentryJavaScript.php index 7818b53..63f5b77 100644 --- a/src/Content/SentryJavaScript.php +++ b/src/Content/SentryJavaScript.php @@ -12,6 +12,7 @@ namespace FoF\Sentry\Content; use Flarum\Frontend\Document; +use Flarum\Http\UrlGenerator; use Flarum\Settings\SettingsRepositoryInterface; class SentryJavaScript @@ -21,9 +22,15 @@ class SentryJavaScript */ private $settings; - public function __construct(SettingsRepositoryInterface $settings) + /** + * @var UrlGenerator + */ + private $url; + + public function __construct(SettingsRepositoryInterface $settings, UrlGenerator $url) { $this->settings = $settings; + $this->url = $url; } public function __invoke(Document $document) @@ -35,6 +42,7 @@ public function __invoke(Document $document) } $dsn = $this->settings->get('fof-sentry.dsn'); + $environment = empty($this->settings->get('fof-sentry.environment')) ? str_replace(['https://', 'http://'], '', $this->url->to('forum')->base()) : $this->settings->get('fof-sentry.environment'); $showFeedback = (bool) (int) $this->settings->get('fof-sentry.user_feedback'); $captureConsole = (bool) (int) $this->settings->get('fof-sentry.javascript.console'); @@ -56,6 +64,7 @@ public function __invoke(Document $document) if (window.Sentry) { Sentry.init({ dsn: '$dsn', + environment: '$environment', beforeSend: function(event) { event.logger = 'javascript'; diff --git a/src/SentryServiceProvider.php b/src/SentryServiceProvider.php index 9c84214..050166e 100644 --- a/src/SentryServiceProvider.php +++ b/src/SentryServiceProvider.php @@ -20,6 +20,7 @@ use Flarum\Foundation\Paths; use Flarum\Frontend\Assets; use Flarum\Frontend\Compiler\Source\SourceCollector; +use Flarum\Http\UrlGenerator; use Flarum\Settings\SettingsRepositoryInterface; use FoF\Sentry\Contracts\Measure; use FoF\Sentry\Formatters\SentryFormatter; @@ -47,7 +48,10 @@ public function register() $this->container->singleton(HubInterface::class, function ($container) { /** @var SettingsRepositoryInterface $settings */ $settings = $container->make(SettingsRepositoryInterface::class); + /** @var UrlGenerator $urlGenerator */ + $url = $container->make(UrlGenerator::class); $dsn = $settings->get('fof-sentry.dsn'); + $environment = empty($settings->get('fof-sentry.environment')) ? str_replace(['https://', 'http://'], '', $url->to('forum')->base()) : $settings->get('fof-sentry.environment'); $performanceMonitoring = (int) $settings->get('fof-sentry.monitor_performance'); /** @var Paths $paths */ @@ -55,14 +59,11 @@ public function register() $tracesSampleRate = $performanceMonitoring > 0 ? round($performanceMonitoring / 100, 2) : 0; - /** @var Config $config */ - $config = $container->make(Config::class); - init([ 'dsn' => $dsn, 'in_app_include' => [$paths->base], 'traces_sample_rate' => $tracesSampleRate, - 'environment' => str_replace(['https://', 'http://'], '', Arr::get($config, 'url')), + 'environment' => $environment, 'release' => Application::VERSION, ]);