fix: fixed CSM-014

This commit is contained in:
2026-05-09 16:38:00 +02:00
parent 1beffe6b07
commit de7ea12c9c
4 changed files with 33 additions and 19 deletions

View File

@@ -207,14 +207,16 @@ defmodule BDS.Generation.Outputs do
Enum.flat_map(posts_by_category, fn {category, posts} ->
paginated_posts = Enum.chunk_every(posts, max(plan.max_posts_per_page, 1))
category_slug = archive_route_segment(category)
total_pages = length(paginated_posts)
total_items = length(posts)
Enum.with_index(paginated_posts, 1)
|> Enum.flat_map(fn {page_posts, page_number} ->
Enum.map(languages, fn language ->
pagination = %{
current_page: page_number,
total_pages: length(paginated_posts),
total_items: length(posts),
total_pages: total_pages,
total_items: total_items,
items_per_page: max(plan.max_posts_per_page, 1),
has_prev_page: page_number > 1,
prev_page_href:
@@ -227,9 +229,9 @@ defmodule BDS.Generation.Outputs do
),
else: ""
),
has_next_page: page_number < length(paginated_posts),
has_next_page: page_number < total_pages,
next_page_href:
if(page_number < length(paginated_posts),
if(page_number < total_pages,
do:
archive_href(
route_language(plan.language, language),
@@ -436,7 +438,8 @@ defmodule BDS.Generation.Outputs do
@spec build_root_outputs(map(), String.t(), [map()]) :: [{String.t(), iodata()}]
def build_root_outputs(plan, language, posts) do
total_pages = page_count(length(posts), plan.max_posts_per_page)
total_items = length(posts)
total_pages = page_count(total_items, plan.max_posts_per_page)
posts
|> paginate_posts(plan.max_posts_per_page)
@@ -454,7 +457,7 @@ defmodule BDS.Generation.Outputs do
pagination_for_page(
page_number,
total_pages,
length(posts),
total_items,
plan.max_posts_per_page,
route_language,
[]
@@ -468,7 +471,8 @@ defmodule BDS.Generation.Outputs do
iodata())) ::
[{String.t(), iodata()}]
def build_paginated_archive_outputs(plan, languages, segments, posts, render_fun) do
total_pages = page_count(length(posts), plan.max_posts_per_page)
total_items = length(posts)
total_pages = page_count(total_items, plan.max_posts_per_page)
posts
|> paginate_posts(plan.max_posts_per_page)
@@ -484,7 +488,7 @@ defmodule BDS.Generation.Outputs do
pagination_for_page(
page_number,
total_pages,
length(posts),
total_items,
plan.max_posts_per_page,
route_language,
segments

View File

@@ -120,11 +120,13 @@ defmodule BDS.Publishing do
defp run_upload(job_id, credentials, targets, uploader, report) do
update_job(job_id, %{status: :running, error: nil})
target_count = max(length(targets), 1)
result =
Enum.with_index(targets, 1)
|> Enum.reduce_while(:ok, fn {target, index}, :ok ->
files = list_target_files(target)
report.(index / max(length(targets), 1), "Uploading #{target.kind}")
report.(index / target_count, "Uploading #{target.kind}")
case uploader.(target, files, credentials) do
:ok -> {:cont, :ok}

View File

@@ -303,13 +303,15 @@ defmodule BDS.Rendering.ListArchive do
)
|> Enum.sort_by(fn {label, _posts} -> label end)
last_index = length(grouped_blocks) - 1
grouped_blocks
|> Enum.with_index()
|> Enum.map(fn {{date_label, grouped_posts}, index} ->
%{
date_label: date_label,
show_date_marker: true,
show_separator: index < length(grouped_blocks) - 1,
show_separator: index < last_index,
posts: Enum.sort_by(grouped_posts, &Map.get(&1, :created_at))
}
end)