diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8d90162..d0b8341 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,6 +14,8 @@ jobs: issues: write pull-requests: write id-token: write + outputs: + version: ${{ steps.semantic-release.outputs.new_release_version }} steps: - name: Checkout uses: actions/checkout@v4 @@ -22,3 +24,37 @@ jobs: id: semantic-release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + publish-types: + runs-on: ubuntu-latest + needs: [release] + permissions: + contents: read + packages: write + steps: + - name: Check out repository + uses: actions/checkout@v4 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.4' + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 22 + registry-url: 'https://npm.pkg.github.com' + - name: Install PHP dependencies + run: composer install --prefer-dist --no-progress + - name: Generate TypeScript types + run: php artisan typescript:transform + - name: Set package version from release tag + working-directory: resources/types + run: | + TAG="${{ needs.release.outputs.version }}" + jq --arg tag "$TAG" '.version = $tag' package.json > package.tmp.json + mv package.tmp.json package.json + - name: Publish to GitHub Packages (types only) + working-directory: resources/types + run: npm publish + env: + NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/app/Data/ApplicationSubmissionData.php b/app/Data/ApplicationSubmissionData.php index e3a385c..1ebf585 100644 --- a/app/Data/ApplicationSubmissionData.php +++ b/app/Data/ApplicationSubmissionData.php @@ -11,6 +11,7 @@ use Carbon\Carbon as CCarbon; use Illuminate\Support\Collection; use Spatie\LaravelData\Data; +use Spatie\LaravelData\Lazy; use Spatie\TypeScriptTransformer\Attributes\LiteralTypeScriptType; use Spatie\TypeScriptTransformer\Attributes\TypeScript; @@ -32,6 +33,7 @@ public function __construct( /** @var ?Collection */ #[LiteralTypeScriptType('ApplicationQuestionAnswerData[]')] public readonly ?Collection $application_question_answers, + public readonly Lazy|ApplicationResponseData $application_response, public readonly ?CCarbon $created_at, public readonly ?CCarbon $updated_at, public readonly ?MemberData $member, @@ -60,6 +62,7 @@ public static function fromApplicationSubmission(ApplicationSubmission $applicat $applicationSubmission->application_id, $applicationSubmission->application ? ApplicationData::from($applicationSubmission->application) : null, ApplicationQuestionAnswerData::collect($applicationSubmission->applicationQuestionAnswers), + Lazy::whenLoaded('applicationResponse', $applicationSubmission, fn () => ApplicationResponseData::from($applicationSubmission->applicationResponse)), $applicationSubmission->created_at, $applicationSubmission->updated_at, $member, diff --git a/app/Data/Requests/CreateApplicationRequest.php b/app/Data/Requests/CreateApplicationRequest.php index d345069..cd1b804 100644 --- a/app/Data/Requests/CreateApplicationRequest.php +++ b/app/Data/Requests/CreateApplicationRequest.php @@ -19,22 +19,22 @@ public function __construct( public readonly string $confirmation_message, public readonly string $completion_message, public readonly ?string $activity_channel, - /** @var array */ - public readonly array $restricted_role_ids, - /** @var array */ - public readonly array $accepted_role_ids, - /** @var array */ - public readonly array $denied_role_ids, - /** @var array */ - public readonly array $ping_role_ids, - /** @var array */ - public readonly array $accept_removal_role_ids, - /** @var array */ - public readonly array $deny_removal_role_ids, - /** @var array */ - public readonly array $pending_role_ids, - /** @var array */ - public readonly array $required_role_ids, + /** @var ?array */ + public readonly ?array $restricted_role_ids, + /** @var ?array */ + public readonly ?array $accepted_role_ids, + /** @var ?array */ + public readonly ?array $denied_role_ids, + /** @var ?array */ + public readonly ?array $ping_role_ids, + /** @var ?array */ + public readonly ?array $accept_removal_role_ids, + /** @var ?array */ + public readonly ?array $deny_removal_role_ids, + /** @var ?array */ + public readonly ?array $pending_role_ids, + /** @var ?array */ + public readonly ?array $required_role_ids, #[Max(20)] public readonly ?string $embed_channel_id, #[Max(100)] diff --git a/app/Http/Controllers/TicketConfigController.php b/app/Http/Controllers/TicketConfigController.php index 15293a0..2006980 100644 --- a/app/Http/Controllers/TicketConfigController.php +++ b/app/Http/Controllers/TicketConfigController.php @@ -22,8 +22,10 @@ public function __construct( /** * Display a listing of the resource. + * + * @return TicketConfigData|array{data:null} */ - public function index(ReadTicketConfigRequest $request): TicketConfigData + public function index(ReadTicketConfigRequest $request): TicketConfigData|array { $guild_id = config('services.discord.server_id'); @@ -31,7 +33,9 @@ public function index(ReadTicketConfigRequest $request): TicketConfigData $guild_id = request()->input('filter[guild_id]', $guild_id); } - return TicketConfigData::from(TicketConfig::where('guild_id', $guild_id)->first())->wrap('data'); + $ticketConfig = TicketConfig::where('guild_id', $guild_id)->first(); + + return $ticketConfig ? TicketConfigData::from($ticketConfig)->wrap('data') : ['data' => null]; } /**