70 lines
2.3 KiB
PHP
70 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api\V1;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Setting;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Cache;
|
|
|
|
/**
|
|
* @group Mobile App Config
|
|
*
|
|
* Public endpoint for mobile app version checks and maintenance status.
|
|
*/
|
|
class AppConfigController extends Controller
|
|
{
|
|
/**
|
|
* Get App Config
|
|
*
|
|
* Returns version info and maintenance status for the given platform.
|
|
*
|
|
* @unauthenticated
|
|
* @queryParam platform string The platform (android|ios). Defaults to android.
|
|
*/
|
|
public function __invoke(Request $request): JsonResponse
|
|
{
|
|
$platform = $request->input('platform', 'android');
|
|
if (!\in_array($platform, ['android', 'ios'], true)) {
|
|
$platform = 'android';
|
|
}
|
|
|
|
$settings = Cache::get('system_settings', function () {
|
|
try {
|
|
return Setting::pluck('value', 'key')->toArray();
|
|
} catch (\Throwable) {
|
|
return [];
|
|
}
|
|
});
|
|
|
|
if ($platform === 'android') {
|
|
$maintenance = filter_var($settings['android_maintenance_mode'] ?? false, FILTER_VALIDATE_BOOLEAN);
|
|
|
|
if ($maintenance) {
|
|
return response()->json([
|
|
'maintenance' => true,
|
|
'message' => 'The app is temporarily under maintenance. Please try again later.',
|
|
], 503);
|
|
}
|
|
|
|
return response()->json([
|
|
'maintenance' => false,
|
|
'latest_version' => $settings['android_latest_version'] ?? '1.0.0',
|
|
'min_version' => $settings['android_min_version'] ?? '1.0.0',
|
|
'store_url' => $settings['android_playstore_url'] ?? null,
|
|
'platform' => 'android',
|
|
]);
|
|
}
|
|
|
|
// ios — placeholder using same pattern, expandable when ios settings are added
|
|
return response()->json([
|
|
'maintenance' => false,
|
|
'latest_version' => $settings['ios_latest_version'] ?? '1.0.0',
|
|
'min_version' => $settings['ios_min_version'] ?? '1.0.0',
|
|
'store_url' => $settings['ios_appstore_url'] ?? null,
|
|
'platform' => 'ios',
|
|
]);
|
|
}
|
|
}
|