Add check for premium to telemetry and update lookup

This commit is contained in:
Constantin Graf
2026-09-22 14:12:03 +02:00
parent 2072223f19
commit 0ef944a896
3 changed files with 20 additions and 0 deletions

View File

@@ -15,12 +15,18 @@ use App\Models\User;
use Exception;
use Illuminate\Support\Facades\Http;
use Log;
use Nwidart\Modules\Facades\Module;
use Throwable;
class ApiService
{
private const string API_URL = 'https://app.solidtime.io/api/v1';
private function isPremium(): bool
{
return Module::has('Invoicing');
}
public function checkForUpdate(): ?string
{
try {
@@ -31,6 +37,7 @@ class ApiService
'version' => config('app.version'),
'build' => config('app.build'),
'url' => config('app.url'),
'is_premium' => $this->isPremium(),
]);
if ($response->status() === 200 && isset($response->json()['version']) && is_string($response->json()['version'])) {
@@ -62,6 +69,7 @@ class ApiService
'version' => config('app.version'),
'build' => config('app.build'),
'url' => config('app.url'),
'is_premium' => $this->isPremium(),
// telemetry data
'user_count' => User::count(),
'organization_count' => Organization::count(),

View File

@@ -9,6 +9,7 @@ use App\Service\ApiService;
use Cache;
use Illuminate\Console\Command;
use Illuminate\Http\Client\ConnectionException;
use Illuminate\Http\Client\Request;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Http;
use PHPUnit\Framework\Attributes\CoversClass;
@@ -32,6 +33,11 @@ class SelfHostCheckForUpdateCommandTest extends TestCase
$this->assertSame(Command::SUCCESS, $exitCode);
$output = Artisan::output();
$this->assertSame('1.2.3', Cache::get('latest_version'));
Http::assertSent(function (Request $request): bool {
$data = $request->data();
return array_key_exists('is_premium', $data) && is_bool($data['is_premium']);
});
}
public function test_checks_for_update_fails_gracefully_if_response_has_error_status_code(): void

View File

@@ -8,6 +8,7 @@ use App\Console\Commands\SelfHost\SelfHostTelemetryCommand;
use App\Service\ApiService;
use Illuminate\Console\Command;
use Illuminate\Http\Client\ConnectionException;
use Illuminate\Http\Client\Request;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Http;
use PHPUnit\Framework\Attributes\CoversClass;
@@ -31,6 +32,11 @@ class SelfHostTelemetryCommandTest extends TestCase
$this->assertSame(Command::SUCCESS, $exitCode);
$output = Artisan::output();
$this->assertSame('', $output);
Http::assertSent(function (Request $request): bool {
$data = $request->data();
return array_key_exists('is_premium', $data) && is_bool($data['is_premium']);
});
}
public function test_telemetry_sends_fails_gracefully_if_response_has_error_status_code(): void