ci: fix tests workflow and clear pre-existing lint errors

- Add `php artisan passport:keys --force` step to tests workflow
  so the OAuth2 server keys exist before tests run. Without them
  every API test failed with `LogicException: Invalid key supplied`
  from `vendor/league/oauth2-server/src/CryptKey.php`.

- Clear 4 pre-existing unused-variable lint errors that were
  blocking this PR's CI (auth/GoogleAuthButton, billing/Subscribe,
  posts/editor/CommentsTab, posts/editor/TikTokSettings).

- `eslint --fix` also reordered imports alphabetically in 11 other
  files — pure cosmetic.
This commit is contained in:
Paulo Castellano 2026-05-04 12:03:44 -03:00
parent 9a26e6d802
commit bec831fec6
16 changed files with 17 additions and 24 deletions

View file

@ -89,6 +89,9 @@ jobs:
DB_PORT: ${{ job.services.postgres.ports['5432'] }}
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
- name: Generate Passport keys
run: php artisan passport:keys --force
- name: Run tests
run: php artisan test --compact
env:

View file

@ -19,8 +19,6 @@ import { trans } from 'laravel-vue-i18n';
import { computed } from 'vue';
import { create as createPost, index as postsIndex } from '@/actions/App/Http/Controllers/App/PostController';
import { useFeatureAccess } from '@/composables/useFeatureAccess';
import { useUpgradeDialog } from '@/composables/useUpgradeDialog';
import NavMain from '@/components/NavMain.vue';
import NavUser from '@/components/NavUser.vue';
import { Avatar } from '@/components/ui/avatar';
@ -43,6 +41,8 @@ import {
SidebarMenuItem,
useSidebar,
} from '@/components/ui/sidebar';
import { useFeatureAccess } from '@/composables/useFeatureAccess';
import { useUpgradeDialog } from '@/composables/useUpgradeDialog';
import { accounts, analytics, calendar, settings as settingsHub } from '@/routes/app';
import { index as assets } from '@/routes/app/assets';
import { index as labels } from '@/routes/app/labels';

View file

@ -5,7 +5,7 @@ import { computed } from 'vue';
import { Button } from '@/components/ui/button';
import { redirect as googleRedirect } from '@/routes/auth/google';
const props = defineProps<{
defineProps<{
label: string;
}>();

View file

@ -3,7 +3,6 @@ import { Form } from '@inertiajs/vue3';
import { trans } from 'laravel-vue-i18n';
import { ref } from 'vue';
import { WorkspaceRole } from '@/enums/workspace-role';
import InputError from '@/components/InputError.vue';
import { Button } from '@/components/ui/button';
import {
@ -23,6 +22,7 @@ import {
SelectTrigger,
SelectValue,
} from '@/components/ui/select';
import { WorkspaceRole } from '@/enums/workspace-role';
import { store as storeInvite } from '@/routes/app/invites';
const open = defineModel<boolean>('open', { default: false });

View file

@ -375,10 +375,6 @@ const showEmojiPicker = (commentId: string) => {
emojiPickerCommentId.value = commentId;
};
const hideEmojiPicker = () => {
emojiPickerCommentId.value = null;
};
const handleKeydown = (event: KeyboardEvent) => {
if ((event.metaKey || event.ctrlKey) && event.key === 'Enter') {
event.preventDefault();

View file

@ -17,8 +17,8 @@ import { computed, nextTick, ref } from 'vue';
import ImagePreviewDialog from '@/components/ImagePreviewDialog.vue';
import EmojiPicker from '@/components/posts/EmojiPicker.vue';
import SignaturesModal from '@/components/posts/SignaturesModal.vue';
import MediaPickerDialog from '@/components/posts/MediaPickerDialog.vue';
import SignaturesModal from '@/components/posts/SignaturesModal.vue';
import { Button } from '@/components/ui/button';
import { Popover, PopoverAnchor, PopoverContent } from '@/components/ui/popover';
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';

View file

@ -21,12 +21,6 @@ interface SocialAccount {
avatar_url: string | null;
}
interface PublishConfig {
privacyLevelOptions: string[];
musicUsageConfirmationUrl: string;
brandedContentPolicyUrl: string;
}
interface CreatorInfo {
creator_nickname: string | null;
creator_username: string | null;

View file

@ -1,7 +1,7 @@
import { ref, type Ref } from 'vue';
import { store as storeAsset, storeChunked as storeAssetChunked } from '@/routes/app/assets';
import { getMediaRulesForContentType } from '@/composables/useMediaRules';
import { store as storeAsset, storeChunked as storeAssetChunked } from '@/routes/app/assets';
import { uploadChunked, shouldUseChunkedUpload } from '@/utils/chunkedUpload';
export interface MediaItem {

View file

@ -3,10 +3,10 @@ import { useHttp, usePage } from '@inertiajs/vue3';
import { onBeforeUnmount, onMounted } from 'vue';
import AppHeader from '@/components/AppHeader.vue';
import UpgradeDialog from '@/components/UpgradeDialog.vue';
import AppSidebar from '@/components/AppSidebar.vue';
import Toast from '@/components/Toast.vue';
import { SidebarInset, SidebarProvider } from '@/components/ui/sidebar';
import UpgradeDialog from '@/components/UpgradeDialog.vue';
import { heartbeat as heartbeatRoute } from '@/routes/app/presence';
import type { BreadcrumbItem } from '@/types';

View file

@ -20,7 +20,6 @@ import PageHeader from '@/components/PageHeader.vue';
import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';
import { Badge } from '@/components/ui/badge';
import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
import {
DropdownMenu,
DropdownMenuContent,
@ -28,6 +27,7 @@ import {
DropdownMenuSeparator,
DropdownMenuTrigger,
} from '@/components/ui/dropdown-menu';
import { Input } from '@/components/ui/input';
import { Switch } from '@/components/ui/switch';
import {
Table,

View file

@ -21,7 +21,7 @@ interface Plan {
monthly_credits_limit: number;
}
const props = defineProps<{
defineProps<{
plans: Plan[];
trialDays: number;
}>();

View file

@ -10,9 +10,9 @@ import {
import { trans } from 'laravel-vue-i18n';
import { computed, onUnmounted, ref, watch } from 'vue';
import ConfirmDeleteModal from '@/components/ConfirmDeleteModal.vue';
import AiGenerateDialog from '@/components/posts/ai/AiGenerateDialog.vue';
import AiReviewDialog from '@/components/posts/ai/AiReviewDialog.vue';
import ConfirmDeleteModal from '@/components/ConfirmDeleteModal.vue';
import PostEditorComposer from '@/components/posts/editor/PostEditorComposer.vue';
import PostEditorSidebar from '@/components/posts/editor/PostEditorSidebar.vue';
import PickTimePopover from '@/components/posts/PickTimePopover.vue';

View file

@ -3,9 +3,9 @@ import { Form, Head } from '@inertiajs/vue3';
import { trans } from 'laravel-vue-i18n';
import { computed } from 'vue';
import SettingsTabsNav from '@/components/settings/SettingsTabsNav.vue';
import HeadingSmall from '@/components/HeadingSmall.vue';
import InputError from '@/components/InputError.vue';
import SettingsTabsNav from '@/components/settings/SettingsTabsNav.vue';
import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';

View file

@ -10,9 +10,9 @@ import { Label } from '@/components/ui/label';
import { Switch } from '@/components/ui/switch';
import AppLayout from '@/layouts/AppLayout.vue';
import { settings as settingsHub } from '@/routes/app';
import { edit as editAuthentication } from '@/routes/app/authentication';
import { preferences as preferencesRoute } from '@/routes/app/notifications';
import { edit as editProfile } from '@/routes/app/profile';
import { edit as editAuthentication } from '@/routes/app/authentication';
import type { BreadcrumbItem } from '@/types';
interface Preferences {

View file

@ -6,8 +6,8 @@ import { computed } from 'vue';
import BrandTab from '@/components/settings/BrandTab.vue';
import SettingsTabsNav from '@/components/settings/SettingsTabsNav.vue';
import AppLayout from '@/layouts/AppLayout.vue';
import { index as apiKeysRoute } from '@/routes/app/api-keys';
import { members as membersRoute, settings as settingsHub } from '@/routes/app';
import { index as apiKeysRoute } from '@/routes/app/api-keys';
import { brand as brandRoute, settings as workspaceSettings } from '@/routes/app/workspace';
import type { BreadcrumbItem } from '@/types';

View file

@ -6,8 +6,8 @@ import { computed } from 'vue';
import SettingsTabsNav from '@/components/settings/SettingsTabsNav.vue';
import WorkspaceTab from '@/components/settings/WorkspaceTab.vue';
import AppLayout from '@/layouts/AppLayout.vue';
import { index as apiKeysRoute } from '@/routes/app/api-keys';
import { members as membersRoute, settings as settingsHub } from '@/routes/app';
import { index as apiKeysRoute } from '@/routes/app/api-keys';
import { brand as brandRoute, settings as workspaceSettings } from '@/routes/app/workspace';
import type { BreadcrumbItem } from '@/types';