mirror of
https://github.com/solidtime-io/solidtime.git
synced 2026-10-07 21:33:18 +01:00
Add check for premium to telemetry and update lookup
This commit is contained in:
committed by
Constantin Graf
parent
06a2048771
commit
12cc3f27f8
@@ -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(),
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user