From e04d5a161585001d1d9b6d3392421e0150a5bdaa Mon Sep 17 00:00:00 2001 From: Svyatoslav Kryukov Date: Wed, 30 Jul 2025 10:42:25 +0300 Subject: [PATCH 1/2] * use Alba inflector --- app/serializers/application_serializer.rb | 12 ------------ config/initializers/alba.rb | 1 + 2 files changed, 1 insertion(+), 12 deletions(-) create mode 100644 config/initializers/alba.rb diff --git a/app/serializers/application_serializer.rb b/app/serializers/application_serializer.rb index e795c28..9ecb376 100644 --- a/app/serializers/application_serializer.rb +++ b/app/serializers/application_serializer.rb @@ -3,18 +3,6 @@ class ApplicationSerializer include Alba::Resource include Typelizer::DSL - class << self - def one(name, serializer: nil, **options) - options[:resource] ||= serializer || "#{name}Serializer".classify.constantize - super(name, **options) - end - - def many(name, serializer: nil, **options) - options[:resource] ||= serializer || "#{name.to_s.singularize}Serializer".classify.constantize - super(name, **options) - end - end - private def default_url_options = ActiveStorage::Current.url_options diff --git a/config/initializers/alba.rb b/config/initializers/alba.rb new file mode 100644 index 0000000..b924ddf --- /dev/null +++ b/config/initializers/alba.rb @@ -0,0 +1 @@ +Alba.inflector = :active_support From 67f4402d85ca560dffe01640dca74427aa79f93c Mon Sep 17 00:00:00 2001 From: Svyatoslav Kryukov Date: Wed, 30 Jul 2025 11:39:50 +0300 Subject: [PATCH 2/2] * revamp work with ts --- .prettierignore | 1 + Gemfile.lock | 2 +- app/frontend/components/Header.tsx | 2 +- app/frontend/components/Layout.tsx | 2 +- app/frontend/components/ReviewScores.tsx | 4 +--- app/frontend/components/Select.tsx | 8 ++++---- app/frontend/components/StarRating.tsx | 5 ++--- app/frontend/components/StatusBadge.tsx | 4 +--- app/frontend/components/TextAreaWithCounter.tsx | 8 ++++---- app/frontend/icons/Google.tsx | 6 +----- app/frontend/pages/evaluations/index.tsx | 6 +++--- app/frontend/pages/evaluations/results/index.tsx | 12 ++++-------- app/frontend/pages/home/index.tsx | 4 ++-- app/frontend/pages/proposals/Form.tsx | 14 +++++++------- app/frontend/pages/proposals/edit.tsx | 4 ++-- app/frontend/pages/proposals/index.tsx | 6 +++--- app/frontend/pages/proposals/new.tsx | 4 ++-- app/frontend/pages/proposals/show.tsx | 6 +++--- app/frontend/pages/reviews/index.tsx | 10 +++++----- app/frontend/pages/reviews/show.tsx | 8 ++++---- app/frontend/serializers/CFP.ts | 9 +++++---- app/frontend/serializers/Evaluation.ts | 7 ++++--- app/frontend/serializers/EvaluationsProposal.ts | 13 +++---------- app/frontend/serializers/Proposal.ts | 11 ++--------- app/frontend/serializers/Review.ts | 11 +++-------- app/frontend/serializers/SpeakerProfile.ts | 2 +- app/frontend/serializers/User.ts | 2 +- app/frontend/serializers/index.ts | 14 +++++++------- app/frontend/types/global.d.ts | 2 +- app/serializers/cfp_serializer.rb | 2 +- app/serializers/evaluation_serializer.rb | 2 +- config/initializers/typelizer.rb | 4 +++- eslint.config.js | 2 +- tsconfig.app.json | 6 ++++++ 34 files changed, 91 insertions(+), 112 deletions(-) diff --git a/.prettierignore b/.prettierignore index 524255c..a860ebf 100644 --- a/.prettierignore +++ b/.prettierignore @@ -3,3 +3,4 @@ build coverage app/frontend/routes +app/frontend/serializers diff --git a/Gemfile.lock b/Gemfile.lock index 6ca032f..8816c04 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -523,7 +523,7 @@ GEM railties (>= 7.1.0) turbo_power (0.7.0) turbo-rails (>= 1.3.0) - typelizer (0.4.1) + typelizer (0.4.2) railties (>= 6.0.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) diff --git a/app/frontend/components/Header.tsx b/app/frontend/components/Header.tsx index 6bf1002..f31b51f 100644 --- a/app/frontend/components/Header.tsx +++ b/app/frontend/components/Header.tsx @@ -3,7 +3,7 @@ import { usePage } from "@inertiajs/react"; import { Menu, X } from "lucide-react"; import { useState } from "react"; -import type { User } from "../serializers"; +import type { User } from "@/serializers"; import { Logo } from "./Logo"; diff --git a/app/frontend/components/Layout.tsx b/app/frontend/components/Layout.tsx index e769c84..6bcb741 100644 --- a/app/frontend/components/Layout.tsx +++ b/app/frontend/components/Layout.tsx @@ -1,6 +1,6 @@ import { usePage } from "@inertiajs/react"; -import type { User } from "../serializers"; +import type { User } from "@/serializers"; import { Footer } from "./Footer"; import { Header } from "./Header"; diff --git a/app/frontend/components/ReviewScores.tsx b/app/frontend/components/ReviewScores.tsx index 1d9b683..b0a684f 100644 --- a/app/frontend/components/ReviewScores.tsx +++ b/app/frontend/components/ReviewScores.tsx @@ -1,5 +1,3 @@ -import type React from "react"; - interface ReviewScoresProps { scores: Record | undefined; } @@ -19,7 +17,7 @@ const scoreClass = (value: number) => { } }; -const ReviewScores: React.FC = ({ scores }) => { +const ReviewScores = ({ scores }: ReviewScoresProps) => { if (!scores || Object.keys(scores).length === 0) { return null; } diff --git a/app/frontend/components/Select.tsx b/app/frontend/components/Select.tsx index a86f561..83caf08 100644 --- a/app/frontend/components/Select.tsx +++ b/app/frontend/components/Select.tsx @@ -1,4 +1,4 @@ -import type React from "react"; +import type { ChangeEvent } from "react"; interface SelectOption { value: string; @@ -8,20 +8,20 @@ interface SelectOption { interface SelectProps { id: string; value: string; - onChange: (e: React.ChangeEvent) => void; + onChange: (e: ChangeEvent) => void; options: SelectOption[]; required?: boolean; placeholder?: string; } -const Select: React.FC = ({ +const Select = ({ id, value, onChange, options, required, placeholder, -}) => { +}: SelectProps) => { return (