広場投稿追加画面の刷新 (#399) #413

マージ済み
みてるぞ が 103 個のコミットを feature/399 から main へマージ 2026-07-19 00:03:11 +09:00
4個のファイルの変更22行の追加18行の削除
コミット 583ce22a7e の変更だけを表示してゐます - すべてのコミットを表示
+6 -1
ファイルの表示
@@ -69,7 +69,12 @@ module PostRepr
return nil unless post.thumbnail.attached?
Rails.application.routes.url_helpers.rails_blob_url(post.thumbnail, only_path: false)
rescue
rescue ActionController::UrlGenerationError, ArgumentError, URI::InvalidURIError => e
Rails.logger.warn(
"PostRepr.thumbnail_url failed post_id=#{post.id} " \
"attachment_id=#{post.thumbnail.attachment&.id} " \
"blob_id=#{post.thumbnail.blob&.id} " \
"error_class=#{e.class} message=#{e.message}")
nil
end
end
+5 -1
ファイルの表示
@@ -36,7 +36,11 @@ Rails.application.configure do
config.action_mailer.perform_caching = false
# Set localhost to be used by links generated in mailer templates.
config.action_mailer.default_url_options = { host: "localhost", port: 3000 }
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
Rails.application.routes.default_url_options.merge!(
host: 'localhost',
port: 3002,
protocol: 'http')
# Print deprecation notices to the Rails logger.
config.active_support.deprecation = :log
+10 -15
ファイルの表示
@@ -826,9 +826,8 @@ const PostImportReviewPage: FC<Props> = ({ user }) => {
: rows
const existingRows = sortedRows.filter (row => isExistingSkipRow (row))
const reviewRows = sortedRows.filter (row => !(isExistingSkipRow (row)))
const canSubmit =
rows.every (row => isCompletedReviewRow (row))
|| processableImportRows (rows).length > 0
const processingRows = processableImportRows (rows)
const canSubmit = processingRows.length > 0
const toggleManualSkip = async (sourceRow: number, checked: boolean) => {
const currentSession = sessionRef.current
@@ -1089,19 +1088,13 @@ const PostImportReviewPage: FC<Props> = ({ user }) => {
|| submitting
|| busyRowIds.size > 0)
return
if (currentSession.rows.every (row => isCompletedReviewRow (row)))
{
finishImport ()
return
}
const processingRows = processableImportRows (currentSession.rows)
if (processingRows.length === 0)
return
setSubmitting (true)
try
{
const processingRows = processableImportRows (currentSession.rows)
if (processingRows.length === 0)
return
const result = await apiPost<{ results: BulkApiRow[] }>(
'/posts/bulk',
buildBulkFormData (processingRows))
@@ -1216,7 +1209,9 @@ const PostImportReviewPage: FC<Props> = ({ user }) => {
manualSkippedCount={counts.manualSkipped}
existingSkippedCount={counts.existingSkipped}
pendingOrErrorCount={counts.pendingOrError}
onBack={() => navigate ('/posts/new')}
onBack={() => navigate (location.state?.from === '/posts/new'
? '/posts/new'
: (-1))}
onSubmit={() => submit ()}/>
</>)
}
@@ -1251,7 +1246,7 @@ const PostImportFooter = (
<span> {creatableCount}</span>
<span> {manualSkippedCount}</span>
<span>稿 {existingSkippedCount}</span>
<span> {pendingOrErrorCount}</span>
<span> {pendingOrErrorCount}</span>
</div>
<div className="flex flex-col gap-2 md:flex-row">
<Button
@@ -1260,7 +1255,7 @@ const PostImportFooter = (
className="w-full md:w-auto"
onClick={onBack}
disabled={submitting}>
URL
</Button>
<Button
type="button"
+1 -1
ファイルの表示
@@ -258,7 +258,7 @@ const PostImportSourcePage: FC<Props> = ({ user }) => {
<Form className="max-w-4xl">
<PageTitle>稿</PageTitle>
<FormField label="URL リスト">
<FormField label="URL リスト(1 行 1 URL)">
{() => (
<TextArea
value={source}