diff --git a/assets/css/app.css b/assets/css/app.css index ab5572e..1d6c9fa 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -577,6 +577,89 @@ html { box-shadow: 0 18px 48px rgb(23 37 31 / 0.10); } +.request-form-progress { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 0.25rem; + padding: 0.3rem; + border: 1px solid var(--color-base-300); + border-radius: 1rem; + background: var(--color-base-200); +} + +.request-form-progress a { + display: flex; + min-width: 0; + min-height: 2.75rem; + align-items: center; + justify-content: center; + gap: 0.45rem; + padding: 0.5rem; + border-radius: 0.75rem; + color: color-mix(in oklab, var(--color-base-content) 70%, transparent); + font-size: 0.75rem; + font-weight: 800; + text-decoration: none; +} + +.request-form-progress a:hover, +.request-form-progress a:focus-visible { + background: var(--color-base-100); + color: var(--color-primary); +} + +.request-form-progress a > span { + display: grid; + width: 1.5rem; + height: 1.5rem; + flex: 0 0 auto; + place-items: center; + border-radius: 9999px; + background: var(--color-base-300); + color: var(--color-base-content); + font-size: 0.7rem; +} + +.request-form-section { + padding: 1.25rem; + border: 1px solid var(--color-base-300); + border-radius: 1.25rem; + background: var(--color-base-100); +} + +.request-form-section-heading { + display: flex; + align-items: flex-start; + gap: 0.75rem; + margin-bottom: 1.25rem; +} + +.request-form-section-heading > span { + display: grid; + width: 2rem; + height: 2rem; + flex: 0 0 auto; + place-items: center; + border-radius: 9999px; + background: var(--color-success); + color: var(--color-success-content); + font-size: 0.8rem; + font-weight: 900; +} + +.request-form-section-heading h2 { + font-size: 1.15rem; + font-weight: 900; + line-height: 1.35; +} + +.request-form-section-heading p { + margin-top: 0.2rem; + color: color-mix(in oklab, var(--color-base-content) 62%, transparent); + font-size: 0.8rem; + line-height: 1.4; +} + .request-location-workspace { padding: 1.25rem; border: 1px solid var(--color-base-300); @@ -845,6 +928,45 @@ html { } @media (max-width: 47.999rem) { + .request-form-progress { + position: sticky; + z-index: 20; + top: 4.25rem; + margin-inline: -0.25rem; + box-shadow: 0 0.5rem 1.5rem rgb(23 37 31 / 0.12); + } + + .request-form-progress a { + display: grid; + gap: 0.15rem; + min-height: 3.25rem; + padding: 0.35rem 0.2rem; + font-size: 0.62rem; + line-height: 1.1; + text-align: center; + } + + .request-form-progress a > span { + width: 1.35rem; + height: 1.35rem; + margin-inline: auto; + } + + .request-form-section { + padding: 1rem; + } + + .request-form-section-heading { + margin-bottom: 1rem; + } + + .request-form-publish { + position: sticky; + z-index: 10; + bottom: max(0.75rem, env(safe-area-inset-bottom)); + box-shadow: 0 0.75rem 1.75rem rgb(23 37 31 / 0.22); + } + .request-location-workspace { padding: 1rem; } diff --git a/assets/js/hooks.js b/assets/js/hooks.js index 93bde58..1da44a0 100644 --- a/assets/js/hooks.js +++ b/assets/js/hooks.js @@ -361,8 +361,12 @@ const createAidMap = element => { if (point.id) { const link = document.createElement("a") - link.href = `/requests/${encodeURIComponent(point.id)}` - link.textContent = state.element.dataset.requestLabel || "Open request" + const pathPrefix = state.element.dataset.itemPathPrefix || "/requests" + link.href = `${pathPrefix}/${encodeURIComponent(point.id)}` + link.textContent = + state.element.dataset.itemLabel || + state.element.dataset.requestLabel || + "Open request" content.append(link) } @@ -524,7 +528,11 @@ const createAidMap = element => { element.className = "request-map-cluster" element.classList.toggle("is-urgent", Number(point.urgent_count) > 0) element.textContent = String(point.count) - element.setAttribute("aria-label", `${point.count} requests`) + element.setAttribute( + "aria-label", + (state.element.dataset.clusterLabel || "%{count} requests") + .replace("%{count}", String(point.count)) + ) element.addEventListener("click", event => { event.stopPropagation() state.map.easeTo({ diff --git a/lib/who_need_help/activities.ex b/lib/who_need_help/activities.ex index 805cde7..20577e3 100644 --- a/lib/who_need_help/activities.ex +++ b/lib/who_need_help/activities.ex @@ -10,6 +10,7 @@ defmodule WhoNeedHelp.Activities do alias WhoNeedHelp.Activities.{Activity, Message, Participant} alias WhoNeedHelp.Catalog alias WhoNeedHelp.Catalog.Category + alias WhoNeedHelp.Help.DiscoveryViewport alias WhoNeedHelp.Pagination alias WhoNeedHelp.Repo alias WhoNeedHelp.Trust @@ -36,52 +37,118 @@ defmodule WhoNeedHelp.Activities do end def paginate_open_activities(%Scope{user: user}, filters \\ %{}, options \\ []) do - now = DateTime.utc_now(:second) limit = Pagination.limit(options) cursor = Pagination.cursor(options) - public_creator = Accounts.public_user_query() + viewport = Keyword.get(options, :viewport) - Activity - |> where( - [activity], - activity.status == :open and activity.starts_at > ^now and - activity.join_deadline > ^now and is_nil(activity.hidden_at) - ) - |> where( - [activity], - activity.creator_id not in subquery( - from block in Block, where: block.blocker_id == ^user.id, select: block.blocked_id - ) - ) - |> where( - [activity], - activity.creator_id not in subquery( - from block in Block, where: block.blocked_id == ^user.id, select: block.blocker_id - ) - ) - |> maybe_filter_category(filters["category_id"] || filters[:category_id]) + user + |> open_activities_query(filters, viewport) |> after_open_activity(cursor) |> order_by([activity], asc: activity.starts_at, asc: activity.id) |> limit(^(limit + 1)) |> with_approved_participant_count() - |> preload([activity], category: :parent, creator: ^public_creator) |> Repo.all() + |> Repo.preload(category: :parent, creator: Accounts.public_user_query()) |> Pagination.page(limit, &{&1.starts_at, &1.id}) end + def map_discovery_items(%Scope{user: user}, filters, %DiscoveryViewport{} = viewport) do + cell_size = DiscoveryViewport.cluster_cell_meters(viewport) + + points = + user + |> open_activities_query(filters, viewport) + |> where([activity], activity.location_visibility == :approximate_public) + |> select([activity], %{ + id: activity.id, + title: activity.title, + location_label: activity.location_label, + public_location: + fragment( + "ST_SetSRID(ST_MakePoint(round(ST_X(?)::numeric, 2)::double precision, round(ST_Y(?)::numeric, 2)::double precision), 4326)", + activity.location, + activity.location + ) + }) + + points + |> subquery() + |> group_by( + [point], + fragment( + "ST_SnapToGrid(ST_Transform(?, 3857), ?)", + point.public_location, + constant(^cell_size) + ) + ) + |> select([point], %{ + count: count(point.id), + activity_id: fragment("CASE WHEN count(*) = 1 THEN min(?::text) END", point.id), + title: fragment("CASE WHEN count(*) = 1 THEN min(?) END", point.title), + location_label: fragment("CASE WHEN count(*) = 1 THEN min(?) END", point.location_label), + longitude: + fragment( + "ST_X(ST_Transform(ST_Centroid(ST_Collect(ST_Transform(?, 3857))), 4326))", + point.public_location + ), + latitude: + fragment( + "ST_Y(ST_Transform(ST_Centroid(ST_Collect(ST_Transform(?, 3857))), 4326))", + point.public_location + ), + cell_x: + fragment( + "ST_X(ST_SnapToGrid(ST_Transform(?, 3857), ?))", + point.public_location, + constant(^cell_size) + ), + cell_y: + fragment( + "ST_Y(ST_SnapToGrid(ST_Transform(?, 3857), ?))", + point.public_location, + constant(^cell_size) + ) + }) + |> order_by( + [point], + asc: + fragment( + "ST_X(ST_SnapToGrid(ST_Transform(?, 3857), ?))", + point.public_location, + constant(^cell_size) + ), + asc: + fragment( + "ST_Y(ST_SnapToGrid(ST_Transform(?, 3857), ?))", + point.public_location, + constant(^cell_size) + ) + ) + |> Repo.all() + |> Enum.map(&map_discovery_item(&1, viewport.zoom)) + end + def list_my_activities(%Scope{user: user}) do paginate_my_activities(%Scope{user: user}).entries end - def visible_open_activity?(%Scope{user: user}, %Activity{} = activity, filters \\ %{}) do + def visible_open_activity?( + %Scope{user: user}, + %Activity{} = activity, + filters \\ %{}, + viewport \\ nil + ) do now = DateTime.utc_now(:second) category_id = filters["category_id"] || filters[:category_id] + area = filters["area"] || filters[:area] activity.status == :open and is_nil(activity.hidden_at) and DateTime.after?(activity.starts_at, now) and DateTime.after?(activity.join_deadline, now) and (category_id in [nil, ""] or to_string(activity.category_id) == to_string(category_id)) and + area_matches?(activity, area) and + viewport_matches?(activity, viewport, area) and not Trust.blocked_between?(user.id, activity.creator_id) end @@ -721,6 +788,159 @@ defmodule WhoNeedHelp.Activities do }) end + defp open_activities_query(user, filters, viewport) do + now = DateTime.utc_now(:second) + + Activity + |> where( + [activity], + activity.status == :open and activity.starts_at > ^now and + activity.join_deadline > ^now and is_nil(activity.hidden_at) + ) + |> where( + [activity], + activity.creator_id not in subquery( + from block in Block, where: block.blocker_id == ^user.id, select: block.blocked_id + ) + ) + |> where( + [activity], + activity.creator_id not in subquery( + from block in Block, where: block.blocked_id == ^user.id, select: block.blocker_id + ) + ) + |> maybe_filter_category(filters["category_id"] || filters[:category_id]) + |> maybe_filter_area(filters["area"] || filters[:area]) + |> filter_discovery_viewport(viewport, filters) + end + + defp filter_discovery_viewport(query, nil, _filters), do: query + + defp filter_discovery_viewport(query, %DiscoveryViewport{} = viewport, filters) do + spatial_condition = + Enum.reduce(DiscoveryViewport.envelopes(viewport), dynamic(false), fn + {west, south, east, north}, condition -> + dynamic( + [activity], + ^condition or + fragment( + "ST_Intersects(?, ST_MakeEnvelope(?, ?, ?, ?, 4326))", + activity.location, + ^west, + ^south, + ^east, + ^north + ) + ) + end) + + area = filters["area"] || filters[:area] + + condition = + if is_binary(area) and String.trim(area) != "" do + dynamic( + [activity], + (activity.location_visibility == :approximate_public and ^spatial_condition) or + activity.location_visibility == :hidden + ) + else + dynamic( + [activity], + activity.location_visibility == :approximate_public and ^spatial_condition + ) + end + + where(query, ^condition) + end + + defp maybe_filter_area(query, value) when value in [nil, ""], do: query + + defp maybe_filter_area(query, value) when is_binary(value) do + value = value |> String.trim() |> String.slice(0, 100) + + if value == "" do + query + else + pattern = "%#{escape_like(value)}%" + + where( + query, + [activity], + fragment("? ILIKE ? ESCAPE E'\\\\'", activity.location_label, ^pattern) + ) + end + end + + defp maybe_filter_area(query, _value), do: where(query, [activity], false) + + defp area_matches?(_activity, value) when value in [nil, ""], do: true + + defp area_matches?(activity, value) when is_binary(value) do + normalized = value |> String.trim() |> String.downcase() + + normalized == "" or + String.contains?(String.downcase(activity.location_label || ""), normalized) + end + + defp area_matches?(_activity, _value), do: false + + defp viewport_matches?(_activity, nil, _area), do: true + + defp viewport_matches?( + %Activity{location_visibility: :hidden}, + %DiscoveryViewport{}, + area + ), + do: is_binary(area) and String.trim(area) != "" + + defp viewport_matches?(activity, %DiscoveryViewport{} = viewport, _area) do + %{latitude: latitude, longitude: longitude} = Activity.exact_coordinates(activity) + + latitude >= viewport.south and latitude <= viewport.north and + longitude_in_viewport?(longitude, viewport) + end + + defp longitude_in_viewport?(longitude, %DiscoveryViewport{west: west, east: east}) + when west < east, + do: longitude >= west and longitude <= east + + defp longitude_in_viewport?(longitude, %DiscoveryViewport{west: west, east: east}), + do: longitude >= west or longitude <= east + + defp map_discovery_item(%{count: 1} = row, _zoom) do + %{ + type: "activity", + id: row.activity_id, + title: row.title, + location: row.location_label, + latitude: row.latitude, + longitude: row.longitude, + exact: false + } + end + + defp map_discovery_item(row, zoom) do + digest = + :crypto.hash(:sha256, "activity:#{zoom}:#{row.cell_x}:#{row.cell_y}") + |> Base.url_encode64(padding: false) + |> binary_part(0, 16) + + %{ + type: "cluster", + id: "activity-cluster-#{digest}", + count: row.count, + latitude: row.latitude, + longitude: row.longitude + } + end + + defp escape_like(value) do + value + |> String.replace("\\", "\\\\") + |> String.replace("%", "\\%") + |> String.replace("_", "\\_") + end + defp locked_activity(id) do Activity |> where([activity], activity.id == ^id) diff --git a/lib/who_need_help/help.ex b/lib/who_need_help/help.ex index 1cf0d24..32392f4 100644 --- a/lib/who_need_help/help.ex +++ b/lib/who_need_help/help.ex @@ -169,7 +169,15 @@ defmodule WhoNeedHelp.Help do cursor = Pagination.cursor(options) HelpRequest - |> where([r], r.requester_id == ^user.id) + |> where( + [request], + request.requester_id == ^user.id or + request.id in subquery( + from assignment in Assignment, + where: assignment.helper_id == ^user.id, + select: assignment.request_id + ) + ) |> before_my_request(cursor) |> order_by([request], desc: request.inserted_at, desc: request.id) |> limit(^(limit + 1)) diff --git a/lib/who_need_help_web/live/activity_live/index.ex b/lib/who_need_help_web/live/activity_live/index.ex index 21c10e8..29e8b62 100644 --- a/lib/who_need_help_web/live/activity_live/index.ex +++ b/lib/who_need_help_web/live/activity_live/index.ex @@ -2,7 +2,10 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do use WhoNeedHelpWeb, :live_view alias WhoNeedHelp.{Activities, Catalog, Pagination} - alias WhoNeedHelp.Activities.Activity + alias WhoNeedHelp.Help.DiscoveryViewport + + @discovery_modes ~w(nearby mine) + @filter_keys ~w(category_id area) @impl true def mount(_params, _session, socket) do @@ -13,7 +16,33 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do {:ok, socket - |> assign(:filters, %{"category_id" => ""}) + |> assign(:filters, empty_filters()) + |> assign(:discovery_mode, "nearby") + |> assign(:viewport, nil) + |> assign(:pending_viewport, nil) + |> assign(:activities, []) + |> assign(:activities_cursor, nil) + |> assign(:map_items, Jason.encode!([])) + |> assign(:map_result_count, 0) + |> assign(:my_activities, []) + |> assign(:my_activities_cursor, nil) + |> assign(:page_title, gettext("Activities")) + |> assign(:categories, Catalog.list_categories(:activity))} + end + + @impl true + def handle_params(params, _uri, socket) do + filters = normalize_filters(params) + viewport = parse_viewport(params) + discovery_mode = normalize_discovery_mode(params["scope"]) + + {:noreply, + socket + |> assign(:filters, filters) + |> assign(:filter_form, to_form(filters, as: :filters)) + |> assign(:discovery_mode, discovery_mode) + |> assign(:viewport, viewport) + |> assign(:pending_viewport, nil) |> load()} end @@ -27,11 +56,13 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do update_entry( socket.assigns.activities, activity, - Activities.visible_open_activity?( - socket.assigns.current_scope, - activity, - socket.assigns.filters - ), + not is_nil(socket.assigns.viewport) and + Activities.visible_open_activity?( + socket.assigns.current_scope, + activity, + socket.assigns.filters, + socket.assigns.viewport + ), :asc, socket.assigns.activities_cursor ) @@ -51,7 +82,7 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do |> assign(:activities_cursor, activities_cursor) |> assign(:my_activities, my_activities) |> assign(:my_activities_cursor, my_activities_cursor) - |> assign(:markers, Jason.encode!(Enum.flat_map(activities, &List.wrap(marker(&1)))))} + |> refresh_map_items()} end def handle_info({:my_activity_updated, activity, member?}, socket) do @@ -72,7 +103,47 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do @impl true def handle_event("filter", %{"filters" => filters}, socket) do - {:noreply, socket |> assign(:filters, filters) |> load()} + {:noreply, push_patch(socket, to: activity_path(socket, filters: normalize_filters(filters)))} + end + + def handle_event("set-scope", %{"scope" => discovery_mode}, socket) + when discovery_mode in @discovery_modes do + {:noreply, push_patch(socket, to: activity_path(socket, discovery_mode: discovery_mode))} + end + + def handle_event("map-viewport-change", params, socket) do + case DiscoveryViewport.cast(params) do + {:ok, viewport} -> + pending = + if DiscoveryViewport.same_area?(viewport, socket.assigns.viewport), + do: nil, + else: viewport + + {:noreply, assign(socket, :pending_viewport, pending)} + + :error -> + {:noreply, socket} + end + end + + def handle_event("initialize-map-area", params, socket) do + case {socket.assigns.viewport, DiscoveryViewport.cast(params)} do + {nil, {:ok, viewport}} -> + {:noreply, push_patch(socket, to: activity_path(socket, viewport: viewport))} + + _already_initialized_or_invalid -> + {:noreply, socket} + end + end + + def handle_event("search-map-area", _params, socket) do + case socket.assigns.pending_viewport do + %DiscoveryViewport{} = viewport -> + {:noreply, push_patch(socket, to: activity_path(socket, viewport: viewport))} + + _no_pending_viewport -> + {:noreply, socket} + end end def handle_event("load-more-activities", _params, socket) do @@ -80,7 +151,8 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do Activities.paginate_open_activities( socket.assigns.current_scope, socket.assigns.filters, - after: socket.assigns.activities_cursor + after: socket.assigns.activities_cursor, + viewport: socket.assigns.viewport ) activities = append_unique(socket.assigns.activities, page.entries) @@ -89,7 +161,7 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do socket |> assign(:activities, activities) |> assign(:activities_cursor, page.next_cursor) - |> assign(:markers, Jason.encode!(Enum.flat_map(activities, &List.wrap(marker(&1)))))} + |> refresh_map_items()} end def handle_event("load-more-my-activities", _params, socket) do @@ -105,24 +177,46 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do end defp load(socket) do - activities_page = - Activities.paginate_open_activities( - socket.assigns.current_scope, - socket.assigns.filters - ) + {activities_page, map_items} = + case {socket.assigns.discovery_mode, socket.assigns.viewport} do + {"nearby", %DiscoveryViewport{} = viewport} -> + page = + Activities.paginate_open_activities( + socket.assigns.current_scope, + socket.assigns.filters, + viewport: viewport + ) + + items = + Activities.map_discovery_items( + socket.assigns.current_scope, + socket.assigns.filters, + viewport + ) + + {page, items} + + _mine_or_missing_viewport -> + {%Pagination.Page{}, []} + end + + my_activities_page = + if socket.assigns.discovery_mode == "mine" do + Activities.paginate_my_activities(socket.assigns.current_scope) + else + %Pagination.Page{} + end - my_activities_page = Activities.paginate_my_activities(socket.assigns.current_scope) activities = activities_page.entries socket - |> assign(:page_title, gettext("Activities")) |> assign(:activities, activities) |> assign(:activities_cursor, activities_page.next_cursor) |> assign(:my_activities, my_activities_page.entries) |> assign(:my_activities_cursor, my_activities_page.next_cursor) - |> assign(:categories, Catalog.list_categories(:activity)) |> assign(:filter_form, to_form(socket.assigns.filters, as: :filters)) - |> assign(:markers, Jason.encode!(Enum.flat_map(activities, &List.wrap(marker(&1))))) + |> assign(:map_items, Jason.encode!(map_items)) + |> assign(:map_result_count, Enum.reduce(map_items, 0, &(map_item_count(&1) + &2))) end defp append_unique(existing, incoming) do @@ -149,20 +243,74 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do {entries, cursor} end - defp marker(activity) do - case Activity.public_coordinates(activity) do - nil -> - nil + defp refresh_map_items(%{assigns: %{viewport: %DiscoveryViewport{} = viewport}} = socket) do + map_items = + Activities.map_discovery_items( + socket.assigns.current_scope, + socket.assigns.filters, + viewport + ) - coordinates -> - Map.merge(coordinates, %{ - id: activity.id, - title: activity.title, - location: activity.location_label - }) + socket + |> assign(:map_items, Jason.encode!(map_items)) + |> assign(:map_result_count, Enum.reduce(map_items, 0, &(map_item_count(&1) + &2))) + end + + defp refresh_map_items(socket), + do: socket |> assign(:map_items, Jason.encode!([])) |> assign(:map_result_count, 0) + + defp map_item_count(%{type: "cluster", count: count}), do: count + defp map_item_count(_activity), do: 1 + + defp empty_filters, do: %{"category_id" => "", "area" => ""} + + defp normalize_filters(params) do + Map.new(@filter_keys, fn key -> + {key, params[key] |> to_string() |> String.slice(0, 100)} + end) + end + + defp parse_viewport(params) do + case DiscoveryViewport.cast(params) do + {:ok, viewport} -> viewport + :error -> nil end end + defp normalize_discovery_mode(discovery_mode) when discovery_mode in @discovery_modes, + do: discovery_mode + + defp normalize_discovery_mode(_discovery_mode), do: "nearby" + + defp activity_path(socket, overrides) do + filters = Keyword.get(overrides, :filters, socket.assigns.filters) + viewport = Keyword.get(overrides, :viewport, socket.assigns.viewport) + discovery_mode = Keyword.get(overrides, :discovery_mode, socket.assigns.discovery_mode) + + params = + filters + |> Map.reject(fn {_key, value} -> value == "" end) + |> then(fn params -> + if discovery_mode == "mine", do: Map.put(params, "scope", "mine"), else: params + end) + |> Map.merge( + if(discovery_mode == "nearby" && viewport, + do: DiscoveryViewport.query_params(viewport), + else: %{} + ) + ) + + ~p"/activities?#{params}" + end + + defp viewport_json(nil), do: "" + + defp viewport_json(%DiscoveryViewport{} = viewport) do + viewport + |> DiscoveryViewport.query_params() + |> Jason.encode!() + end + defp status_label(:open), do: gettext("Open") defp status_label(:completed), do: gettext("Completed") defp status_label(:cancelled), do: gettext("Cancelled") @@ -198,11 +346,38 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do + + <.form + :if={@discovery_mode == "nearby"} for={@filter_form} id="activity-filters" phx-change="filter" - class="mt-5 rounded-2xl bg-base-200 p-4" + class="mt-5 grid gap-3 rounded-2xl bg-base-200 p-4 md:grid-cols-2" > <.input field={@filter_form[:category_id]} @@ -216,17 +391,37 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do ) ]} /> + <.input + field={@filter_form[:area]} + label={gettext("Area or city")} + placeholder={gettext("Optional text search")} + phx-debounce="400" + /> -
+
+ <.icon name="hero-map" class="mx-auto size-8 text-info" /> +

{gettext("Choose an area on the map")}

+

+ {gettext("Only activities from the selected map area will be loaded.")} +

+
+ +
-

{gettext("No open activities yet")}

+

{gettext("No open activities in this area")}

- {gettext("Create a clear plan in a public place.")} + {gettext("Move or zoom the map to search somewhere else.")}

@@ -283,32 +478,81 @@ defmodule WhoNeedHelpWeb.ActivityLive.Index do
-
-

{gettext("Your activities")}

+
+
+ <.icon name="hero-user-group" class="mx-auto size-8 text-info" /> +

{gettext("No activities yet")}

+

+ {gettext( + "Activities you create or ask to join will appear here. Leaving removes an activity from this list." + )} +

+ <.link navigate={~p"/activities/new"} class="btn btn-info mt-5"> + {gettext("Create an activity")} + +
+
<.link :for={activity <- @my_activities} id={"my-activity-#{activity.id}"} navigate={~p"/activities/#{activity.id}"} - class="rounded-2xl bg-base-200 p-4" + class="rounded-2xl border border-base-300 bg-base-100 p-4 transition hover:border-info/50" > {status_label(activity.status)}
{activity.title}
+
+ <.local_time + id={"my-activity-start-#{activity.id}"} + value={activity.starts_at} + date_style="medium" + time_style="short" + /> +
+ + <.form + :if={@discovery_mode == "nearby"} for={@filter_form} id="request-filters" phx-change="filter" @@ -358,6 +420,7 @@ defmodule WhoNeedHelpWeb.RequestLive.Index do
-
-

{gettext("Your requests")}

-
+
+
+
+

{gettext("My requests")}

+

+ {gettext("Track requests you created and requests you accepted as a helper.")} +

+
+ <.link navigate={~p"/requests/new"} class="btn btn-primary btn-sm hidden sm:inline-flex"> + {gettext("Create request")} + +
+ +
+ <.icon name="hero-clipboard-document-list" class="mx-auto size-9 text-success" /> +

{gettext("No requests yet")}

+

+ {gettext("Requests you publish or accept will appear here.")} +

+ <.link navigate={~p"/requests/new"} class="btn btn-primary mt-5"> + {gettext("Create your first request")} + +
+ +
<.link :for={request <- @my_requests} id={"my-request-#{request.id}"} navigate={~p"/requests/#{request.id}"} class="rounded-2xl bg-base-200 p-4" > - {status_label(request.status)} -
{request.title}
+
+
+ {status_label(request.status)} +
{request.title}
+
+ <.icon name="hero-chevron-right" class="mt-1 size-5 shrink-0 opacity-45" /> +
+ +
+
+ 2 +
+

{gettext("When is help needed?")}

+

{gettext("Set urgency and when this request should close.")}

+
+
+
+ <.input + field={@form[:urgency]} + type="select" + label={gettext("Urgency")} + options={[ + {gettext("Now"), "now"}, + {gettext("Today"), "today"}, + {gettext("Scheduled"), "scheduled"} + ]} + /> + <.datetime_picker + field={@form[:expires_at]} + label={gettext("Request expires")} + min={minimum_expiry_value()} + quick_options={[ + {gettext("In 1 hour"), 60}, + {gettext("In 3 hours"), 180}, + {gettext("Tomorrow"), 1_440} + ]} + /> +
+
+
+ 3 +
+

{gettext("Where is help needed?")}

+

{gettext("Share only as much location detail as helpers need.")}

+
+
-

{gettext("Where is help needed?")}

<.input field={@form[:location_label]} label={gettext("Area or public landmark")} @@ -658,37 +705,46 @@ defmodule WhoNeedHelpWeb.RequestLive.New do {message}

-
- <.input - field={@form[:safety_confirmed]} - type="checkbox" - label={safety_confirmation(@selected_category)} - required - class="checkbox checkbox-success mt-0.5" - /> -
-
diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index 5ad4472..c708a1d 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -180,7 +180,7 @@ msgid "Active" msgstr "" #: lib/who_need_help_web/components/layouts.ex:231 -#: lib/who_need_help_web/live/activity_live/index.ex:118 +#: lib/who_need_help_web/live/activity_live/index.ex:29 #, elixir-autogen, elixir-format msgid "Activities" msgstr "" @@ -216,7 +216,7 @@ msgstr "" msgid "Activity restored." msgstr "" -#: lib/who_need_help_web/live/activity_live/index.ex:210 +#: lib/who_need_help_web/live/activity_live/index.ex:385 #: lib/who_need_help_web/live/activity_live/new.ex:174 #, elixir-autogen, elixir-format msgid "Activity type" @@ -233,12 +233,12 @@ msgstr "" msgid "Administrator" msgstr "" -#: lib/who_need_help_web/live/activity_live/index.ex:212 +#: lib/who_need_help_web/live/activity_live/index.ex:387 #, elixir-autogen, elixir-format msgid "All activities" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:331 +#: lib/who_need_help_web/live/request_live/index.ex:393 #, elixir-autogen, elixir-format msgid "All categories" msgstr "" @@ -253,7 +253,7 @@ msgstr "" msgid "Another helper already accepted this request." msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:346 +#: lib/who_need_help_web/live/request_live/index.ex:408 #, elixir-autogen, elixir-format msgid "Any urgency" msgstr "" @@ -280,7 +280,7 @@ msgstr "" #: lib/who_need_help_web/controllers/page_html/home.html.heex:80 #: lib/who_need_help_web/live/activity_live/new.ex:303 -#: lib/who_need_help_web/live/request_live/new.ex:474 +#: lib/who_need_help_web/live/request_live/new.ex:521 #, elixir-autogen, elixir-format msgid "Approximate area" msgstr "" @@ -373,17 +373,17 @@ msgstr "" msgid "Cancel request" msgstr "" -#: lib/who_need_help_web/live/activity_live/index.ex:168 +#: lib/who_need_help_web/live/activity_live/index.ex:316 #: lib/who_need_help_web/live/activity_live/show.ex:344 -#: lib/who_need_help_web/live/request_live/index.ex:278 -#: lib/who_need_help_web/live/request_live/index.ex:279 +#: lib/who_need_help_web/live/request_live/index.ex:313 +#: lib/who_need_help_web/live/request_live/index.ex:314 #: lib/who_need_help_web/live/request_live/show.ex:956 #, elixir-autogen, elixir-format msgid "Cancelled" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:329 -#: lib/who_need_help_web/live/request_live/new.ex:276 +#: lib/who_need_help_web/live/request_live/index.ex:391 +#: lib/who_need_help_web/live/request_live/new.ex:302 #, elixir-autogen, elixir-format msgid "Category" msgstr "" @@ -393,7 +393,7 @@ msgstr "" msgid "Category created and proposal approved." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:307 +#: lib/who_need_help_web/live/request_live/new.ex:333 #: lib/who_need_help_web/live/request_live/show.ex:1048 #, elixir-autogen, elixir-format msgid "Category details" @@ -431,15 +431,15 @@ msgstr "" msgid "Choose activity" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:277 +#: lib/who_need_help_web/live/request_live/new.ex:303 #, elixir-autogen, elixir-format msgid "Choose category" msgstr "" #: lib/who_need_help_web/live/activity_live/new.ex:210 #: lib/who_need_help_web/live/activity_live/new.ex:237 -#: lib/who_need_help_web/live/request_live/new.ex:319 -#: lib/who_need_help_web/live/request_live/new.ex:346 +#: lib/who_need_help_web/live/request_live/new.ex:345 +#: lib/who_need_help_web/live/request_live/new.ex:372 #, elixir-autogen, elixir-format msgid "Choose…" msgstr "" @@ -465,7 +465,7 @@ msgstr "" msgid "Coffee and conversation" msgstr "" -#: lib/who_need_help_web/live/activity_live/index.ex:182 +#: lib/who_need_help_web/live/activity_live/index.ex:330 #, elixir-autogen, elixir-format msgid "Coffee, cinema, walks, and hikes are separate from urgent help and never affect helper ratings." msgstr "" @@ -480,19 +480,19 @@ msgstr "" msgid "Community helpers" msgstr "" -#: lib/who_need_help_web/live/activity_live/index.ex:270 +#: lib/who_need_help_web/live/activity_live/index.ex:465 #: lib/who_need_help_web/live/activity_live/show.ex:403 #: lib/who_need_help_web/live/activity_live/show.ex:621 #: lib/who_need_help_web/live/activity_live/show.ex:680 -#: lib/who_need_help_web/live/request_live/index.ex:474 +#: lib/who_need_help_web/live/request_live/index.ex:537 #, elixir-autogen, elixir-format msgid "Community member" msgstr "" -#: lib/who_need_help_web/live/activity_live/index.ex:167 +#: lib/who_need_help_web/live/activity_live/index.ex:315 #: lib/who_need_help_web/live/activity_live/show.ex:343 -#: lib/who_need_help_web/live/request_live/index.ex:276 -#: lib/who_need_help_web/live/request_live/index.ex:277 +#: lib/who_need_help_web/live/request_live/index.ex:311 +#: lib/who_need_help_web/live/request_live/index.ex:312 #: lib/who_need_help_web/live/request_live/show.ex:955 #: lib/who_need_help_web/live/request_live/show.ex:974 #, elixir-autogen, elixir-format @@ -543,17 +543,13 @@ msgstr "" msgid "Confirming..." msgstr "" -#: lib/who_need_help_web/live/activity_live/index.ex:229 -#, elixir-autogen, elixir-format -msgid "Create a clear plan in a public place." -msgstr "" - -#: lib/who_need_help_web/live/activity_live/index.ex:188 +#: lib/who_need_help_web/live/activity_live/index.ex:336 #: lib/who_need_help_web/live/activity_live/new.ex:12 #, elixir-autogen, elixir-format msgid "Create activity" msgstr "" +#: lib/who_need_help_web/live/activity_live/index.ex:535 #: lib/who_need_help_web/live/activity_live/new.ex:150 #, elixir-autogen, elixir-format msgid "Create an activity" @@ -564,7 +560,7 @@ msgstr "" msgid "Create category" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:307 +#: lib/who_need_help_web/live/request_live/index.ex:342 #, elixir-autogen, elixir-format msgid "Create urgent request" msgstr "" @@ -719,12 +715,12 @@ msgstr "" msgid "Expires:" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:391 +#: lib/who_need_help_web/live/request_live/new.ex:420 #, elixir-autogen, elixir-format msgid "Explain what is already arranged and what the volunteer needs to do." msgstr "" -#: lib/who_need_help_web/live/activity_live/index.ex:179 +#: lib/who_need_help_web/live/activity_live/index.ex:327 #, elixir-autogen, elixir-format msgid "Find people to join" msgstr "" @@ -886,8 +882,8 @@ msgstr "" msgid "In a browser this works only while the page remains open. The Android app shows a persistent notification and can continue after it is minimized. Raw coordinates are removed when sharing stops." msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:274 -#: lib/who_need_help_web/live/request_live/index.ex:275 +#: lib/who_need_help_web/live/request_live/index.ex:309 +#: lib/who_need_help_web/live/request_live/index.ex:310 #: lib/who_need_help_web/live/request_live/show.ex:954 #, elixir-autogen, elixir-format msgid "In progress" @@ -922,7 +918,7 @@ msgstr "" #: lib/who_need_help_web/live/activity_live/new.ex:327 #: lib/who_need_help_web/live/notification_live.ex:659 -#: lib/who_need_help_web/live/request_live/new.ex:622 +#: lib/who_need_help_web/live/request_live/new.ex:669 #, elixir-autogen, elixir-format msgid "Latitude" msgstr "" @@ -980,7 +976,7 @@ msgstr "" #: lib/who_need_help_web/live/activity_live/new.ex:334 #: lib/who_need_help_web/live/notification_live.ex:673 -#: lib/who_need_help_web/live/request_live/new.ex:636 +#: lib/who_need_help_web/live/request_live/new.ex:683 #, elixir-autogen, elixir-format msgid "Longitude" msgstr "" @@ -1010,8 +1006,8 @@ msgstr "" msgid "Match and coordinate" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:272 -#: lib/who_need_help_web/live/request_live/index.ex:273 +#: lib/who_need_help_web/live/request_live/index.ex:307 +#: lib/who_need_help_web/live/request_live/index.ex:308 #: lib/who_need_help_web/live/request_live/show.ex:952 #, elixir-autogen, elixir-format msgid "Matched" @@ -1037,7 +1033,7 @@ msgstr "" msgid "Medicine requests" msgstr "" -#: lib/who_need_help_web/live/activity_live/index.ex:195 +#: lib/who_need_help_web/live/activity_live/index.ex:343 #, elixir-autogen, elixir-format msgid "Meet in public first, keep exact details inside the approved group, and leave or report anything that feels unsafe." msgstr "" @@ -1093,12 +1089,12 @@ msgstr "" msgid "Moderator access is required." msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:298 +#: lib/who_need_help_web/live/request_live/index.ex:333 #, elixir-autogen, elixir-format msgid "NEARBY MUTUAL AID" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:31 +#: lib/who_need_help_web/live/request_live/index.ex:33 #, elixir-autogen, elixir-format msgid "Nearby help" msgstr "" @@ -1120,7 +1116,7 @@ msgstr "" #: lib/who_need_help_web/live/activity_live/new.ex:242 #: lib/who_need_help_web/live/activity_live/show.ex:300 -#: lib/who_need_help_web/live/request_live/new.ex:351 +#: lib/who_need_help_web/live/request_live/new.ex:380 #: lib/who_need_help_web/live/request_live/show.ex:877 #, elixir-autogen, elixir-format msgid "No" @@ -1137,11 +1133,6 @@ msgstr "" msgid "No messages yet." msgstr "" -#: lib/who_need_help_web/live/activity_live/index.ex:227 -#, elixir-autogen, elixir-format -msgid "No open activities yet" -msgstr "" - #: lib/who_need_help_web/live/moderation_live.ex:537 #, elixir-autogen, elixir-format msgid "No open signals." @@ -1184,17 +1175,17 @@ msgid "Not for emergencies" msgstr "" #: lib/who_need_help_web/live/notification_live.ex:721 -#: lib/who_need_help_web/live/request_live/index.ex:262 -#: lib/who_need_help_web/live/request_live/index.ex:263 -#: lib/who_need_help_web/live/request_live/index.ex:347 -#: lib/who_need_help_web/live/request_live/new.ex:410 +#: lib/who_need_help_web/live/request_live/index.ex:297 +#: lib/who_need_help_web/live/request_live/index.ex:298 +#: lib/who_need_help_web/live/request_live/index.ex:409 +#: lib/who_need_help_web/live/request_live/new.ex:450 #: lib/who_need_help_web/live/request_live/show.ex:943 #: lib/who_need_help_web/live/request_live/show.ex:944 #, elixir-autogen, elixir-format msgid "Now" msgstr "" -#: lib/who_need_help_web/live/activity_live/index.ex:177 +#: lib/who_need_help_web/live/activity_live/index.ex:325 #, elixir-autogen, elixir-format msgid "OPTIONAL SOCIAL PLANS" msgstr "" @@ -1212,12 +1203,12 @@ msgstr "" #: lib/who_need_help/notifications/text.ex:141 #: lib/who_need_help_web/controllers/content_removal_html.ex:21 #: lib/who_need_help_web/controllers/support_html.ex:16 -#: lib/who_need_help_web/live/activity_live/index.ex:166 +#: lib/who_need_help_web/live/activity_live/index.ex:314 #: lib/who_need_help_web/live/activity_live/show.ex:342 #: lib/who_need_help_web/live/moderation_live.ex:258 #: lib/who_need_help_web/live/report_live.ex:104 -#: lib/who_need_help_web/live/request_live/index.ex:270 -#: lib/who_need_help_web/live/request_live/index.ex:271 +#: lib/who_need_help_web/live/request_live/index.ex:305 +#: lib/who_need_help_web/live/request_live/index.ex:306 #: lib/who_need_help_web/live/request_live/show.ex:951 #: lib/who_need_help_web/live/support_operations_live.ex:237 #: lib/who_need_help_web/live/support_operations_live.ex:438 @@ -1304,7 +1295,7 @@ msgstr "" msgid "Password updated successfully." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:397 +#: lib/who_need_help_web/live/request_live/new.ex:426 #, elixir-autogen, elixir-format msgid "Pickup instructions (optional)" msgstr "" @@ -1340,7 +1331,7 @@ msgstr "" msgid "Please check the submitted message." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:454 +#: lib/who_need_help_web/live/request_live/new.ex:501 #, elixir-autogen, elixir-format msgid "Podil, near the central pharmacy" msgstr "" @@ -1439,13 +1430,13 @@ msgstr "" msgid "Publish proposal" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:690 +#: lib/who_need_help_web/live/request_live/new.ex:745 #, elixir-autogen, elixir-format msgid "Publish request" msgstr "" #: lib/who_need_help_web/live/activity_live/new.ex:353 -#: lib/who_need_help_web/live/request_live/new.ex:688 +#: lib/who_need_help_web/live/request_live/new.ex:743 #, elixir-autogen, elixir-format msgid "Publishing…" msgstr "" @@ -1685,10 +1676,10 @@ msgid "Save profile" msgstr "" #: lib/who_need_help_web/live/notification_live.ex:723 -#: lib/who_need_help_web/live/request_live/index.ex:266 -#: lib/who_need_help_web/live/request_live/index.ex:267 -#: lib/who_need_help_web/live/request_live/index.ex:349 -#: lib/who_need_help_web/live/request_live/new.ex:412 +#: lib/who_need_help_web/live/request_live/index.ex:301 +#: lib/who_need_help_web/live/request_live/index.ex:302 +#: lib/who_need_help_web/live/request_live/index.ex:411 +#: lib/who_need_help_web/live/request_live/new.ex:452 #: lib/who_need_help_web/live/request_live/show.ex:947 #: lib/who_need_help_web/live/request_live/show.ex:948 #, elixir-autogen, elixir-format @@ -1717,7 +1708,7 @@ msgstr "" msgid "Share location" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:399 +#: lib/who_need_help_web/live/request_live/new.ex:428 #, elixir-autogen, elixir-format msgid "Share only non-sensitive instructions. Exact details can wait for the matched chat." msgstr "" @@ -1728,7 +1719,7 @@ msgid "Short bio" msgstr "" #: lib/who_need_help_web/live/activity_live/new.ex:266 -#: lib/who_need_help_web/live/request_live/new.ex:383 +#: lib/who_need_help_web/live/request_live/new.ex:412 #, elixir-autogen, elixir-format msgid "Short title" msgstr "" @@ -1950,7 +1941,7 @@ msgstr "" msgid "This interaction is blocked." msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:314 +#: lib/who_need_help_web/live/request_live/index.ex:349 #: lib/who_need_help_web/live/request_live/show.ex:1022 #, elixir-autogen, elixir-format msgid "This is not an emergency service. Contact local emergency services for immediate danger." @@ -1998,10 +1989,10 @@ msgid "To see sent emails, visit" msgstr "" #: lib/who_need_help_web/live/notification_live.ex:722 -#: lib/who_need_help_web/live/request_live/index.ex:264 -#: lib/who_need_help_web/live/request_live/index.ex:265 -#: lib/who_need_help_web/live/request_live/index.ex:348 -#: lib/who_need_help_web/live/request_live/new.ex:411 +#: lib/who_need_help_web/live/request_live/index.ex:299 +#: lib/who_need_help_web/live/request_live/index.ex:300 +#: lib/who_need_help_web/live/request_live/index.ex:410 +#: lib/who_need_help_web/live/request_live/new.ex:451 #: lib/who_need_help_web/live/request_live/show.ex:945 #: lib/who_need_help_web/live/request_live/show.ex:946 #, elixir-autogen, elixir-format @@ -2080,8 +2071,8 @@ msgid "Update email instructions" msgstr "" #: lib/who_need_help_web/live/notification_live.ex:716 -#: lib/who_need_help_web/live/request_live/index.ex:344 -#: lib/who_need_help_web/live/request_live/new.ex:408 +#: lib/who_need_help_web/live/request_live/index.ex:406 +#: lib/who_need_help_web/live/request_live/new.ex:448 #, elixir-autogen, elixir-format msgid "Urgency" msgstr "" @@ -2209,7 +2200,8 @@ msgstr "" msgid "What help category is missing?" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:389 +#: lib/who_need_help_web/live/request_live/new.ex:294 +#: lib/who_need_help_web/live/request_live/new.ex:418 #, elixir-autogen, elixir-format msgid "What help do you need?" msgstr "" @@ -2229,7 +2221,7 @@ msgstr "" msgid "Who Need Help was developed with the local Codex CLI authenticated through the builder's ChatGPT subscription. No OpenAI API key or usage-based API fallback is used." msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:299 +#: lib/who_need_help_web/live/request_live/index.ex:334 #, elixir-autogen, elixir-format msgid "Who needs help?" msgstr "" @@ -2251,7 +2243,7 @@ msgstr "" #: lib/who_need_help_web/live/activity_live/new.ex:239 #: lib/who_need_help_web/live/activity_live/show.ex:298 -#: lib/who_need_help_web/live/request_live/new.ex:348 +#: lib/who_need_help_web/live/request_live/new.ex:374 #: lib/who_need_help_web/live/request_live/show.ex:875 #: lib/who_need_help_web/live/request_live/show.ex:1431 #: lib/who_need_help_web/live/request_live/show.ex:1439 @@ -2322,11 +2314,6 @@ msgstr "" msgid "You need to reauthenticate to perform sensitive actions on your account." msgstr "" -#: lib/who_need_help_web/live/activity_live/index.ex:302 -#, elixir-autogen, elixir-format -msgid "Your activities" -msgstr "" - #: lib/who_need_help_web/live/request_live/show.ex:184 #, elixir-autogen, elixir-format msgid "Your confirmation was saved." @@ -2343,7 +2330,6 @@ msgid "Your request is now visible to nearby helpers." msgstr "" #: lib/who_need_help_web/controllers/support_html/index.html.heex:6 -#: lib/who_need_help_web/live/request_live/index.ex:559 #, elixir-autogen, elixir-format msgid "Your requests" msgstr "" @@ -2353,7 +2339,7 @@ msgstr "" msgid "Your review is revealed only after both participants submit." msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:538 +#: lib/who_need_help_web/live/request_live/index.ex:602 #, elixir-autogen, elixir-format msgid "Your trust summary" msgstr "" @@ -2374,17 +2360,17 @@ msgstr "" msgid "before confirming." msgstr "" -#: lib/who_need_help_web/live/activity_live/index.ex:269 +#: lib/who_need_help_web/live/activity_live/index.ex:464 #: lib/who_need_help_web/live/category_proposal_live.ex:188 #: lib/who_need_help_web/live/moderation_live.ex:372 -#: lib/who_need_help_web/live/request_live/index.ex:473 +#: lib/who_need_help_web/live/request_live/index.ex:536 #, elixir-autogen, elixir-format msgid "by %{name}" msgstr "" #: lib/who_need_help_web/live/profile_live.ex:194 #: lib/who_need_help_web/live/public_profile_live.ex:133 -#: lib/who_need_help_web/live/request_live/index.ex:542 +#: lib/who_need_help_web/live/request_live/index.ex:606 #: lib/who_need_help_web/live/request_live/show.ex:1374 #, elixir-autogen, elixir-format msgid "completed" @@ -2420,7 +2406,7 @@ msgstr "" msgid "participants only" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:546 +#: lib/who_need_help_web/live/request_live/index.ex:610 #: lib/who_need_help_web/live/request_live/show.ex:1378 #, elixir-autogen, elixir-format msgid "people" @@ -2480,7 +2466,7 @@ msgstr "" #: lib/who_need_help_web/live/activity_live/show.ex:701 #: lib/who_need_help_web/live/profile_live.ex:289 #: lib/who_need_help_web/live/public_profile_live.ex:98 -#: lib/who_need_help_web/live/request_live/index.ex:550 +#: lib/who_need_help_web/live/request_live/index.ex:614 #: lib/who_need_help_web/live/request_live/show.ex:1093 #: lib/who_need_help_web/live/request_live/show.ex:1476 #, elixir-autogen, elixir-format @@ -2513,8 +2499,8 @@ msgstr "" msgid "Approved" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:280 -#: lib/who_need_help_web/live/request_live/index.ex:281 +#: lib/who_need_help_web/live/request_live/index.ex:315 +#: lib/who_need_help_web/live/request_live/index.ex:316 #, elixir-autogen, elixir-format msgid "Expired" msgstr "" @@ -2567,8 +2553,8 @@ msgstr "" msgid "Load earlier messages" msgstr "" -#: lib/who_need_help_web/live/activity_live/index.ex:281 -#: lib/who_need_help_web/live/activity_live/index.ex:320 +#: lib/who_need_help_web/live/activity_live/index.ex:476 +#: lib/who_need_help_web/live/activity_live/index.ex:564 #: lib/who_need_help_web/live/category_proposal_live.ex:220 #: lib/who_need_help_web/live/leaderboard_live.ex:91 #: lib/who_need_help_web/live/moderation_live.ex:465 @@ -2580,16 +2566,15 @@ msgstr "" #: lib/who_need_help_web/live/profile_live.ex:367 #: lib/who_need_help_web/live/public_profile_live.ex:178 #: lib/who_need_help_web/live/report_live.ex:98 -#: lib/who_need_help_web/live/request_live/index.ex:577 +#: lib/who_need_help_web/live/request_live/index.ex:671 #: lib/who_need_help_web/live/support_operations_live.ex:306 #: lib/who_need_help_web/live/support_operations_live.ex:505 #, elixir-autogen, elixir-format msgid "Load more" msgstr "" -#: lib/who_need_help_web/live/activity_live/index.ex:292 #: lib/who_need_help_web/live/activity_live/show.ex:543 -#: lib/who_need_help_web/live/request_live/index.ex:519 +#: lib/who_need_help_web/live/request_live/index.ex:582 #: lib/who_need_help_web/live/request_live/show.ex:1275 #, elixir-autogen, elixir-format msgid "The map is unavailable in this browser. Request details remain usable." @@ -3983,7 +3968,7 @@ msgstr "" msgid "A volunteer accepted this request. Use private chat to coordinate safely." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:589 +#: lib/who_need_help_web/live/request_live/new.ex:636 #, elixir-autogen, elixir-format msgid "After a helper accepts" msgstr "" @@ -3993,12 +3978,12 @@ msgstr "" msgid "Already registered? Check your email" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:453 +#: lib/who_need_help_web/live/request_live/new.ex:500 #, elixir-autogen, elixir-format msgid "Area or public landmark" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:553 +#: lib/who_need_help_web/live/request_live/new.ex:600 #, elixir-autogen, elixir-format msgid "Area radius" msgstr "" @@ -4029,8 +4014,8 @@ msgstr "" msgid "Choose a category from the same mode." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:434 -#: lib/who_need_help_web/live/request_live/new.ex:606 +#: lib/who_need_help_web/live/request_live/new.ex:475 +#: lib/who_need_help_web/live/request_live/new.ex:653 #, elixir-autogen, elixir-format msgid "Choose a place on the map or use your current location." msgstr "" @@ -4073,7 +4058,7 @@ msgid "Date" msgstr "" #: lib/who_need_help_web/live/notification_live.ex:656 -#: lib/who_need_help_web/live/request_live/new.ex:614 +#: lib/who_need_help_web/live/request_live/new.ex:661 #, elixir-autogen, elixir-format msgid "Enter coordinates manually" msgstr "" @@ -4083,17 +4068,17 @@ msgstr "" msgid "Enter the six digits shown to the requester." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:488 +#: lib/who_need_help_web/live/request_live/new.ex:535 #, elixir-autogen, elixir-format msgid "Exact point" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:680 +#: lib/who_need_help_web/live/request_live/new.ex:735 #, elixir-autogen, elixir-format msgid "Fix the following details and publish again:" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:616 +#: lib/who_need_help_web/live/request_live/new.ex:663 #, elixir-autogen, elixir-format msgid "For an approximate area, these coordinates are the area center—not your exact position." msgstr "" @@ -4134,7 +4119,7 @@ msgstr "" msgid "Helper:" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:534 +#: lib/who_need_help_web/live/request_live/new.ex:581 #, elixir-autogen, elixir-format msgid "Helpers will see only the area or landmark written above. You can share a live location later after matching." msgstr "" @@ -4149,29 +4134,29 @@ msgstr "" msgid "If this email belongs to an existing account, a secure sign-in link will arrive shortly." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:420 +#: lib/who_need_help_web/live/request_live/new.ex:460 #, elixir-autogen, elixir-format msgid "In 1 hour" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:421 +#: lib/who_need_help_web/live/request_live/new.ex:461 #, elixir-autogen, elixir-format msgid "In 3 hours" msgstr "" #: lib/who_need_help_web/live/notification_live.ex:574 -#: lib/who_need_help_web/live/request_live/new.ex:444 +#: lib/who_need_help_web/live/request_live/new.ex:485 #, elixir-autogen, elixir-format msgid "Location is unavailable in this browser." msgstr "" #: lib/who_need_help_web/live/notification_live.ex:576 -#: lib/who_need_help_web/live/request_live/new.ex:446 +#: lib/who_need_help_web/live/request_live/new.ex:487 #, elixir-autogen, elixir-format msgid "Location permission was denied." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:574 +#: lib/who_need_help_web/live/request_live/new.ex:621 #, elixir-autogen, elixir-format msgid "Move the map area so it covers a useful public meeting place." msgstr "" @@ -4181,17 +4166,17 @@ msgstr "" msgid "New notice" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:532 +#: lib/who_need_help_web/live/request_live/new.ex:579 #, elixir-autogen, elixir-format msgid "No coordinates will be stored" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:443 +#: lib/who_need_help_web/live/request_live/new.ex:484 #, elixir-autogen, elixir-format msgid "No map coordinates will be stored." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:502 +#: lib/who_need_help_web/live/request_live/new.ex:549 #, elixir-autogen, elixir-format msgid "No map location" msgstr "" @@ -4206,7 +4191,7 @@ msgstr "" msgid "Only notices submitted while signed in appear here. Notices submitted without an account remain accessible through their private email link." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:503 +#: lib/who_need_help_web/live/request_live/new.ex:550 #, elixir-autogen, elixir-format msgid "Only the public area description" msgstr "" @@ -4248,7 +4233,7 @@ msgstr "" msgid "Read" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:475 +#: lib/who_need_help_web/live/request_live/new.ex:522 #, elixir-autogen, elixir-format msgid "Recommended for privacy" msgstr "" @@ -4263,7 +4248,7 @@ msgstr "" msgid "Registration request accepted" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:417 +#: lib/who_need_help_web/live/request_live/new.ex:457 #, elixir-autogen, elixir-format msgid "Request expires" msgstr "" @@ -4273,7 +4258,7 @@ msgstr "" msgid "Request to join again" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:679 +#: lib/who_need_help_web/live/request_live/new.ex:734 #, elixir-autogen, elixir-format msgid "Request was not published" msgstr "" @@ -4326,7 +4311,7 @@ msgstr "" msgid "Status updates go to the email address of your signed-in account." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:515 +#: lib/who_need_help_web/live/request_live/new.ex:562 #, elixir-autogen, elixir-format msgid "The map is unavailable. You can use the manual coordinate fallback." msgstr "" @@ -4341,7 +4326,7 @@ msgstr "" msgid "This activity is closed. The group chat remains available as read-only history." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:457 +#: lib/who_need_help_web/live/request_live/new.ex:504 #, elixir-autogen, elixir-format msgid "This description is visible to everyone. Do not enter a private address." msgstr "" @@ -4371,7 +4356,7 @@ msgstr "" msgid "This person has not added a public bio yet." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:581 +#: lib/who_need_help_web/live/request_live/new.ex:628 #, elixir-autogen, elixir-format msgid "This point is public" msgstr "" @@ -4402,12 +4387,12 @@ msgstr "" msgid "Time" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:422 +#: lib/who_need_help_web/live/request_live/new.ex:462 #, elixir-autogen, elixir-format msgid "Tomorrow" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:582 +#: lib/who_need_help_web/live/request_live/new.ex:629 #, elixir-autogen, elixir-format msgid "Use a safe public meeting point instead of a private address." msgstr "" @@ -4418,7 +4403,7 @@ msgid "Use another email" msgstr "" #: lib/who_need_help_web/live/notification_live.ex:609 -#: lib/who_need_help_web/live/request_live/new.ex:549 +#: lib/who_need_help_web/live/request_live/new.ex:596 #, elixir-autogen, elixir-format msgid "Use my location" msgstr "" @@ -4456,7 +4441,7 @@ msgstr "" msgid "View my requests" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:489 +#: lib/who_need_help_web/live/request_live/new.ex:536 #, elixir-autogen, elixir-format msgid "Visible before matching" msgstr "" @@ -4471,12 +4456,12 @@ msgstr "" msgid "Voted" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:462 +#: lib/who_need_help_web/live/request_live/new.ex:509 #, elixir-autogen, elixir-format msgid "What should people see?" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:450 +#: lib/who_need_help_web/live/request_live/new.ex:493 #, elixir-autogen, elixir-format msgid "Where is help needed?" msgstr "" @@ -4491,7 +4476,7 @@ msgstr "" msgid "You are not a participant. You can send a new request while registration is open." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:591 +#: lib/who_need_help_web/live/request_live/new.ex:638 #, elixir-autogen, elixir-format msgid "You can separately share live location with the matched person and stop sharing at any time." msgstr "" @@ -4511,7 +4496,7 @@ msgstr "" msgid "Your completion confirmation is saved." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:573 +#: lib/who_need_help_web/live/request_live/new.ex:620 #, elixir-autogen, elixir-format msgid "Your exact position is not shown" msgstr "" @@ -4536,69 +4521,71 @@ msgstr "" msgid "← Community helpers" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:436 +#: lib/who_need_help_web/live/request_live/new.ex:477 #, elixir-autogen, elixir-format msgid "Area selected. Drag the green pin or click the map to move it." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:523 +#: lib/who_need_help_web/live/request_live/new.ex:570 #, elixir-autogen, elixir-format msgid "Click the map or drag the green pin to move the area" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:526 +#: lib/who_need_help_web/live/request_live/new.ex:573 #, elixir-autogen, elixir-format msgid "Click the map or drag the red pin to move the point" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:441 +#: lib/who_need_help_web/live/request_live/new.ex:482 #, elixir-autogen, elixir-format msgid "Drag to move the approximate area" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:442 +#: lib/who_need_help_web/live/request_live/new.ex:483 #, elixir-autogen, elixir-format msgid "Drag to move the exact point" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:439 +#: lib/who_need_help_web/live/request_live/new.ex:480 #, elixir-autogen, elixir-format msgid "Exact point selected. Drag the red pin or click the map to move it." msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:371 +#: lib/who_need_help_web/live/request_live/index.ex:434 #, elixir-autogen, elixir-format msgid "%{count} request in this map area" msgid_plural "%{count} requests in this map area" msgstr[0] "" msgstr[1] "" -#: lib/who_need_help_web/live/request_live/index.ex:354 +#: lib/who_need_help_web/live/activity_live/index.ex:396 +#: lib/who_need_help_web/live/request_live/index.ex:416 #, elixir-autogen, elixir-format msgid "Area or city" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:424 +#: lib/who_need_help_web/live/activity_live/index.ex:412 +#: lib/who_need_help_web/live/request_live/index.ex:487 #, elixir-autogen, elixir-format msgid "Choose an area on the map" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:301 +#: lib/who_need_help_web/live/request_live/index.ex:336 #, elixir-autogen, elixir-format msgid "Explore privacy-friendly areas and public exact meeting points chosen by requesters." msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:392 +#: lib/who_need_help_web/live/request_live/index.ex:455 #, elixir-autogen, elixir-format msgid "List" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:495 +#: lib/who_need_help_web/live/request_live/index.ex:558 #, elixir-autogen, elixir-format msgid "Load more in this area" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:412 +#: lib/who_need_help_web/live/request_live/index.ex:475 #, elixir-autogen, elixir-format msgid "Map" msgstr "" @@ -4608,47 +4595,50 @@ msgstr "" msgid "Map preview" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:436 +#: lib/who_need_help_web/live/activity_live/index.ex:424 +#: lib/who_need_help_web/live/request_live/index.ex:499 #, elixir-autogen, elixir-format msgid "Move or zoom the map to search somewhere else." msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:379 +#: lib/who_need_help_web/live/request_live/index.ex:442 #, elixir-autogen, elixir-format msgid "Move the map, then search the newly visible area." msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:434 +#: lib/who_need_help_web/live/request_live/index.ex:497 #, elixir-autogen, elixir-format msgid "No open requests in this area" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:426 +#: lib/who_need_help_web/live/request_live/index.ex:489 #, elixir-autogen, elixir-format msgid "Only requests from the selected map area will be loaded." msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:522 +#: lib/who_need_help_web/live/request_live/index.ex:585 #, elixir-autogen, elixir-format msgid "Open request" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:355 +#: lib/who_need_help_web/live/activity_live/index.ex:397 +#: lib/who_need_help_web/live/request_live/index.ex:417 #, elixir-autogen, elixir-format msgid "Optional text search" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:501 +#: lib/who_need_help_web/live/request_live/index.ex:564 #, elixir-autogen, elixir-format msgid "Requests without map coordinates appear only when their public area description matches the text search." msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:383 +#: lib/who_need_help_web/live/request_live/index.ex:446 #, elixir-autogen, elixir-format msgid "Results layout" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:533 +#: lib/who_need_help_web/live/activity_live/index.ex:508 +#: lib/who_need_help_web/live/request_live/index.ex:597 #, elixir-autogen, elixir-format msgid "Search this area" msgstr "" @@ -4658,19 +4648,19 @@ msgstr "" msgid "Static preview" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:402 +#: lib/who_need_help_web/live/request_live/index.ex:465 #, elixir-autogen, elixir-format msgid "Together" msgstr "" #: lib/who_need_help_web/controllers/page_html/home.html.heex:160 -#: lib/who_need_help_web/live/activity_live/index.ex:294 +#: lib/who_need_help_web/live/activity_live/index.ex:496 #: lib/who_need_help_web/live/activity_live/show.ex:545 #: lib/who_need_help_web/live/notification_live.ex:575 #: lib/who_need_help_web/live/notification_live.ex:594 -#: lib/who_need_help_web/live/request_live/index.ex:521 -#: lib/who_need_help_web/live/request_live/new.ex:445 -#: lib/who_need_help_web/live/request_live/new.ex:517 +#: lib/who_need_help_web/live/request_live/index.ex:584 +#: lib/who_need_help_web/live/request_live/new.ex:486 +#: lib/who_need_help_web/live/request_live/new.ex:564 #: lib/who_need_help_web/live/request_live/show.ex:1277 #, elixir-autogen, elixir-format msgid "Try map again" @@ -5056,6 +5046,7 @@ msgid "Nearby alert deleted." msgstr "" #: lib/who_need_help_web/live/notification_live.ex:429 +#: lib/who_need_help_web/live/request_live/index.ex:362 #, elixir-autogen, elixir-format msgid "Nearby requests" msgstr "" @@ -5393,7 +5384,7 @@ msgstr "" msgid "WebGL is unavailable in this browser, so the full map cannot start. Select an example below or retry the map." msgstr "" -#: lib/who_need_help_web/live/activity_live/index.ex:295 +#: lib/who_need_help_web/live/activity_live/index.ex:497 #: lib/who_need_help_web/live/activity_live/show.ex:546 #: lib/who_need_help_web/live/request_live/show.ex:1278 #, elixir-autogen, elixir-format @@ -5487,7 +5478,7 @@ msgstr "" msgid "I confirm this is not an emergency or request for medical advice, the medicine and arrangement are lawful, and a volunteer chooses whether to spend money." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:376 +#: lib/who_need_help_web/live/request_live/new.ex:405 #, elixir-autogen, elixir-format msgid "If purchase is needed, accepting the request does not require the volunteer to spend money. Agree on the medicine, pharmacy requirements, payment, and any reimbursement only in the private matched chat." msgstr "" @@ -5958,7 +5949,7 @@ msgstr "" msgid "Delivery settings" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:478 +#: lib/who_need_help_web/live/request_live/index.ex:541 #, elixir-autogen, elixir-format msgid "Expires" msgstr "" @@ -5977,3 +5968,156 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Notification sections" msgstr "" + +#: lib/who_need_help_web/live/activity_live/index.ex:492 +#, elixir-autogen, elixir-format +msgid "%{count} activities" +msgstr "" + +#: lib/who_need_help_web/live/activity_live/index.ex:512 +#, elixir-autogen, elixir-format +msgid "%{count} activity in this map area" +msgid_plural "%{count} activities in this map area" +msgstr[0] "" +msgstr[1] "" + +#: lib/who_need_help_web/live/request_live/index.ex:586 +#, elixir-autogen, elixir-format +msgid "%{count} requests" +msgstr "" + +#: lib/who_need_help_web/live/activity_live/index.ex:530 +#, elixir-autogen, elixir-format +msgid "Activities you create or ask to join will appear here. Leaving removes an activity from this list." +msgstr "" + +#: lib/who_need_help_web/live/activity_live/index.ex:351 +#, elixir-autogen, elixir-format +msgid "Activity views" +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:295 +#, elixir-autogen, elixir-format +msgid "Choose a category and describe the task clearly." +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:713 +#, elixir-autogen, elixir-format +msgid "Confirm the safety guidance before asking nearby people for help." +msgstr "" + +#: lib/who_need_help_web/live/request_live/index.ex:631 +#, elixir-autogen, elixir-format +msgid "Create request" +msgstr "" + +#: lib/who_need_help_web/live/request_live/index.ex:645 +#, elixir-autogen, elixir-format +msgid "Create your first request" +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:277 +#, elixir-autogen, elixir-format +msgid "Help details" +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:279 +#, elixir-autogen, elixir-format +msgid "Location" +msgstr "" + +#: lib/who_need_help_web/live/activity_live/index.ex:357 +#, elixir-autogen, elixir-format +msgid "My activities" +msgstr "" + +#: lib/who_need_help_web/live/request_live/index.ex:363 +#: lib/who_need_help_web/live/request_live/index.ex:625 +#, elixir-autogen, elixir-format +msgid "My requests" +msgstr "" + +#: lib/who_need_help_web/live/activity_live/index.ex:356 +#, elixir-autogen, elixir-format +msgid "Nearby activities" +msgstr "" + +#: lib/who_need_help_web/live/activity_live/index.ex:528 +#, elixir-autogen, elixir-format +msgid "No activities yet" +msgstr "" + +#: lib/who_need_help_web/live/activity_live/index.ex:422 +#, elixir-autogen, elixir-format +msgid "No open activities in this area" +msgstr "" + +#: lib/who_need_help_web/live/request_live/index.ex:640 +#, elixir-autogen, elixir-format +msgid "No requests yet" +msgstr "" + +#: lib/who_need_help_web/live/activity_live/index.ex:414 +#, elixir-autogen, elixir-format +msgid "Only activities from the selected map area will be loaded." +msgstr "" + +#: lib/who_need_help_web/live/activity_live/index.ex:491 +#, elixir-autogen, elixir-format +msgid "Open activity" +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:273 +#, elixir-autogen, elixir-format +msgid "Request form steps" +msgstr "" + +#: lib/who_need_help_web/live/request_live/index.ex:357 +#, elixir-autogen, elixir-format +msgid "Request views" +msgstr "" + +#: lib/who_need_help_web/live/request_live/index.ex:642 +#, elixir-autogen, elixir-format +msgid "Requests you publish or accept will appear here." +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:280 +#, elixir-autogen, elixir-format +msgid "Review" +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:712 +#, elixir-autogen, elixir-format +msgid "Review and publish" +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:441 +#, elixir-autogen, elixir-format +msgid "Set urgency and when this request should close." +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:494 +#, elixir-autogen, elixir-format +msgid "Share only as much location detail as helpers need." +msgstr "" + +#: lib/who_need_help_web/live/activity_live/index.ex:494 +#, elixir-autogen, elixir-format +msgid "The map is unavailable in this browser. Activity details remain usable." +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:278 +#, elixir-autogen, elixir-format +msgid "Timing" +msgstr "" + +#: lib/who_need_help_web/live/request_live/index.ex:627 +#, elixir-autogen, elixir-format +msgid "Track requests you created and requests you accepted as a helper." +msgstr "" + +#: lib/who_need_help_web/live/request_live/new.ex:440 +#, elixir-autogen, elixir-format +msgid "When is help needed?" +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index e22ead6..b051425 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -180,7 +180,7 @@ msgid "Active" msgstr "Active" #: lib/who_need_help_web/components/layouts.ex:231 -#: lib/who_need_help_web/live/activity_live/index.ex:118 +#: lib/who_need_help_web/live/activity_live/index.ex:29 #, elixir-autogen, elixir-format msgid "Activities" msgstr "Activities" @@ -216,7 +216,7 @@ msgstr "Activity published. You approve every participant." msgid "Activity restored." msgstr "Activity restored." -#: lib/who_need_help_web/live/activity_live/index.ex:210 +#: lib/who_need_help_web/live/activity_live/index.ex:385 #: lib/who_need_help_web/live/activity_live/new.ex:174 #, elixir-autogen, elixir-format msgid "Activity type" @@ -233,12 +233,12 @@ msgstr "Add unverified link" msgid "Administrator" msgstr "Administrator" -#: lib/who_need_help_web/live/activity_live/index.ex:212 +#: lib/who_need_help_web/live/activity_live/index.ex:387 #, elixir-autogen, elixir-format msgid "All activities" msgstr "All activities" -#: lib/who_need_help_web/live/request_live/index.ex:331 +#: lib/who_need_help_web/live/request_live/index.ex:393 #, elixir-autogen, elixir-format msgid "All categories" msgstr "All categories" @@ -253,7 +253,7 @@ msgstr "Already registered?" msgid "Another helper already accepted this request." msgstr "Another helper already accepted this request." -#: lib/who_need_help_web/live/request_live/index.ex:346 +#: lib/who_need_help_web/live/request_live/index.ex:408 #, elixir-autogen, elixir-format msgid "Any urgency" msgstr "Any urgency" @@ -280,7 +280,7 @@ msgstr "Approved participants" #: lib/who_need_help_web/controllers/page_html/home.html.heex:80 #: lib/who_need_help_web/live/activity_live/new.ex:303 -#: lib/who_need_help_web/live/request_live/new.ex:474 +#: lib/who_need_help_web/live/request_live/new.ex:521 #, elixir-autogen, elixir-format msgid "Approximate area" msgstr "Approximate area" @@ -373,17 +373,17 @@ msgstr "Cancel activity" msgid "Cancel request" msgstr "Cancel request" -#: lib/who_need_help_web/live/activity_live/index.ex:168 +#: lib/who_need_help_web/live/activity_live/index.ex:316 #: lib/who_need_help_web/live/activity_live/show.ex:344 -#: lib/who_need_help_web/live/request_live/index.ex:278 -#: lib/who_need_help_web/live/request_live/index.ex:279 +#: lib/who_need_help_web/live/request_live/index.ex:313 +#: lib/who_need_help_web/live/request_live/index.ex:314 #: lib/who_need_help_web/live/request_live/show.ex:956 #, elixir-autogen, elixir-format msgid "Cancelled" msgstr "Cancelled" -#: lib/who_need_help_web/live/request_live/index.ex:329 -#: lib/who_need_help_web/live/request_live/new.ex:276 +#: lib/who_need_help_web/live/request_live/index.ex:391 +#: lib/who_need_help_web/live/request_live/new.ex:302 #, elixir-autogen, elixir-format msgid "Category" msgstr "Category" @@ -393,7 +393,7 @@ msgstr "Category" msgid "Category created and proposal approved." msgstr "Category created and proposal approved." -#: lib/who_need_help_web/live/request_live/new.ex:307 +#: lib/who_need_help_web/live/request_live/new.ex:333 #: lib/who_need_help_web/live/request_live/show.ex:1048 #, elixir-autogen, elixir-format msgid "Category details" @@ -431,15 +431,15 @@ msgstr "Choose a category, urgency, and safe location visibility." msgid "Choose activity" msgstr "Choose activity" -#: lib/who_need_help_web/live/request_live/new.ex:277 +#: lib/who_need_help_web/live/request_live/new.ex:303 #, elixir-autogen, elixir-format msgid "Choose category" msgstr "Choose category" #: lib/who_need_help_web/live/activity_live/new.ex:210 #: lib/who_need_help_web/live/activity_live/new.ex:237 -#: lib/who_need_help_web/live/request_live/new.ex:319 -#: lib/who_need_help_web/live/request_live/new.ex:346 +#: lib/who_need_help_web/live/request_live/new.ex:345 +#: lib/who_need_help_web/live/request_live/new.ex:372 #, elixir-autogen, elixir-format msgid "Choose…" msgstr "Choose…" @@ -465,7 +465,7 @@ msgstr "Close" msgid "Coffee and conversation" msgstr "Coffee and conversation" -#: lib/who_need_help_web/live/activity_live/index.ex:182 +#: lib/who_need_help_web/live/activity_live/index.ex:330 #, elixir-autogen, elixir-format msgid "Coffee, cinema, walks, and hikes are separate from urgent help and never affect helper ratings." msgstr "Coffee, cinema, walks, and hikes are separate from urgent help and never affect helper ratings." @@ -480,19 +480,19 @@ msgstr "Comment (optional)" msgid "Community helpers" msgstr "Community helpers" -#: lib/who_need_help_web/live/activity_live/index.ex:270 +#: lib/who_need_help_web/live/activity_live/index.ex:465 #: lib/who_need_help_web/live/activity_live/show.ex:403 #: lib/who_need_help_web/live/activity_live/show.ex:621 #: lib/who_need_help_web/live/activity_live/show.ex:680 -#: lib/who_need_help_web/live/request_live/index.ex:474 +#: lib/who_need_help_web/live/request_live/index.ex:537 #, elixir-autogen, elixir-format msgid "Community member" msgstr "Community member" -#: lib/who_need_help_web/live/activity_live/index.ex:167 +#: lib/who_need_help_web/live/activity_live/index.ex:315 #: lib/who_need_help_web/live/activity_live/show.ex:343 -#: lib/who_need_help_web/live/request_live/index.ex:276 -#: lib/who_need_help_web/live/request_live/index.ex:277 +#: lib/who_need_help_web/live/request_live/index.ex:311 +#: lib/who_need_help_web/live/request_live/index.ex:312 #: lib/who_need_help_web/live/request_live/show.ex:955 #: lib/who_need_help_web/live/request_live/show.ex:974 #, elixir-autogen, elixir-format @@ -543,17 +543,13 @@ msgstr "Confirmation instructions" msgid "Confirming..." msgstr "Confirming..." -#: lib/who_need_help_web/live/activity_live/index.ex:229 -#, elixir-autogen, elixir-format -msgid "Create a clear plan in a public place." -msgstr "Create a clear plan in a public place." - -#: lib/who_need_help_web/live/activity_live/index.ex:188 +#: lib/who_need_help_web/live/activity_live/index.ex:336 #: lib/who_need_help_web/live/activity_live/new.ex:12 #, elixir-autogen, elixir-format msgid "Create activity" msgstr "Create activity" +#: lib/who_need_help_web/live/activity_live/index.ex:535 #: lib/who_need_help_web/live/activity_live/new.ex:150 #, elixir-autogen, elixir-format msgid "Create an activity" @@ -564,7 +560,7 @@ msgstr "Create an activity" msgid "Create category" msgstr "Create category" -#: lib/who_need_help_web/live/request_live/index.ex:307 +#: lib/who_need_help_web/live/request_live/index.ex:342 #, elixir-autogen, elixir-format msgid "Create urgent request" msgstr "Create urgent request" @@ -719,12 +715,12 @@ msgstr "Exact publicly" msgid "Expires:" msgstr "Expires:" -#: lib/who_need_help_web/live/request_live/new.ex:391 +#: lib/who_need_help_web/live/request_live/new.ex:420 #, elixir-autogen, elixir-format msgid "Explain what is already arranged and what the volunteer needs to do." msgstr "Explain what is already arranged and what the volunteer needs to do." -#: lib/who_need_help_web/live/activity_live/index.ex:179 +#: lib/who_need_help_web/live/activity_live/index.ex:327 #, elixir-autogen, elixir-format msgid "Find people to join" msgstr "Find people to join" @@ -886,8 +882,8 @@ msgstr "Impersonation" msgid "In a browser this works only while the page remains open. The Android app shows a persistent notification and can continue after it is minimized. Raw coordinates are removed when sharing stops." msgstr "In a browser this works only while the page remains open. The Android app shows a persistent notification and can continue after it is minimized. Raw coordinates are removed when sharing stops." -#: lib/who_need_help_web/live/request_live/index.ex:274 -#: lib/who_need_help_web/live/request_live/index.ex:275 +#: lib/who_need_help_web/live/request_live/index.ex:309 +#: lib/who_need_help_web/live/request_live/index.ex:310 #: lib/who_need_help_web/live/request_live/show.ex:954 #, elixir-autogen, elixir-format msgid "In progress" @@ -922,7 +918,7 @@ msgstr "Join requests close" #: lib/who_need_help_web/live/activity_live/new.ex:327 #: lib/who_need_help_web/live/notification_live.ex:659 -#: lib/who_need_help_web/live/request_live/new.ex:622 +#: lib/who_need_help_web/live/request_live/new.ex:669 #, elixir-autogen, elixir-format msgid "Latitude" msgstr "Latitude" @@ -980,7 +976,7 @@ msgstr "Logged out successfully." #: lib/who_need_help_web/live/activity_live/new.ex:334 #: lib/who_need_help_web/live/notification_live.ex:673 -#: lib/who_need_help_web/live/request_live/new.ex:636 +#: lib/who_need_help_web/live/request_live/new.ex:683 #, elixir-autogen, elixir-format msgid "Longitude" msgstr "Longitude" @@ -1010,8 +1006,8 @@ msgstr "Mark completed" msgid "Match and coordinate" msgstr "Match and coordinate" -#: lib/who_need_help_web/live/request_live/index.ex:272 -#: lib/who_need_help_web/live/request_live/index.ex:273 +#: lib/who_need_help_web/live/request_live/index.ex:307 +#: lib/who_need_help_web/live/request_live/index.ex:308 #: lib/who_need_help_web/live/request_live/show.ex:952 #, elixir-autogen, elixir-format msgid "Matched" @@ -1037,7 +1033,7 @@ msgstr "Medicine pickup remains the first priority. Roadside categories use the msgid "Medicine requests" msgstr "Medicine requests" -#: lib/who_need_help_web/live/activity_live/index.ex:195 +#: lib/who_need_help_web/live/activity_live/index.ex:343 #, elixir-autogen, elixir-format msgid "Meet in public first, keep exact details inside the approved group, and leave or report anything that feels unsafe." msgstr "Meet in public first, keep exact details inside the approved group, and leave or report anything that feels unsafe." @@ -1093,12 +1089,12 @@ msgstr "Moderator" msgid "Moderator access is required." msgstr "Moderator access is required." -#: lib/who_need_help_web/live/request_live/index.ex:298 +#: lib/who_need_help_web/live/request_live/index.ex:333 #, elixir-autogen, elixir-format msgid "NEARBY MUTUAL AID" msgstr "NEARBY MUTUAL AID" -#: lib/who_need_help_web/live/request_live/index.ex:31 +#: lib/who_need_help_web/live/request_live/index.ex:33 #, elixir-autogen, elixir-format msgid "Nearby help" msgstr "Nearby help" @@ -1120,7 +1116,7 @@ msgstr "New password" #: lib/who_need_help_web/live/activity_live/new.ex:242 #: lib/who_need_help_web/live/activity_live/show.ex:300 -#: lib/who_need_help_web/live/request_live/new.ex:351 +#: lib/who_need_help_web/live/request_live/new.ex:380 #: lib/who_need_help_web/live/request_live/show.ex:877 #, elixir-autogen, elixir-format msgid "No" @@ -1137,11 +1133,6 @@ msgstr "No completed help yet." msgid "No messages yet." msgstr "No messages yet." -#: lib/who_need_help_web/live/activity_live/index.ex:227 -#, elixir-autogen, elixir-format -msgid "No open activities yet" -msgstr "No open activities yet" - #: lib/who_need_help_web/live/moderation_live.ex:537 #, elixir-autogen, elixir-format msgid "No open signals." @@ -1184,17 +1175,17 @@ msgid "Not for emergencies" msgstr "Not for emergencies" #: lib/who_need_help_web/live/notification_live.ex:721 -#: lib/who_need_help_web/live/request_live/index.ex:262 -#: lib/who_need_help_web/live/request_live/index.ex:263 -#: lib/who_need_help_web/live/request_live/index.ex:347 -#: lib/who_need_help_web/live/request_live/new.ex:410 +#: lib/who_need_help_web/live/request_live/index.ex:297 +#: lib/who_need_help_web/live/request_live/index.ex:298 +#: lib/who_need_help_web/live/request_live/index.ex:409 +#: lib/who_need_help_web/live/request_live/new.ex:450 #: lib/who_need_help_web/live/request_live/show.ex:943 #: lib/who_need_help_web/live/request_live/show.ex:944 #, elixir-autogen, elixir-format msgid "Now" msgstr "Now" -#: lib/who_need_help_web/live/activity_live/index.ex:177 +#: lib/who_need_help_web/live/activity_live/index.ex:325 #, elixir-autogen, elixir-format msgid "OPTIONAL SOCIAL PLANS" msgstr "OPTIONAL SOCIAL PLANS" @@ -1212,12 +1203,12 @@ msgstr "Only the organizer and approved participants can read or send these mess #: lib/who_need_help/notifications/text.ex:141 #: lib/who_need_help_web/controllers/content_removal_html.ex:21 #: lib/who_need_help_web/controllers/support_html.ex:16 -#: lib/who_need_help_web/live/activity_live/index.ex:166 +#: lib/who_need_help_web/live/activity_live/index.ex:314 #: lib/who_need_help_web/live/activity_live/show.ex:342 #: lib/who_need_help_web/live/moderation_live.ex:258 #: lib/who_need_help_web/live/report_live.ex:104 -#: lib/who_need_help_web/live/request_live/index.ex:270 -#: lib/who_need_help_web/live/request_live/index.ex:271 +#: lib/who_need_help_web/live/request_live/index.ex:305 +#: lib/who_need_help_web/live/request_live/index.ex:306 #: lib/who_need_help_web/live/request_live/show.ex:951 #: lib/who_need_help_web/live/support_operations_live.ex:237 #: lib/who_need_help_web/live/support_operations_live.ex:438 @@ -1304,7 +1295,7 @@ msgstr "Password" msgid "Password updated successfully." msgstr "Password updated successfully." -#: lib/who_need_help_web/live/request_live/new.ex:397 +#: lib/who_need_help_web/live/request_live/new.ex:426 #, elixir-autogen, elixir-format msgid "Pickup instructions (optional)" msgstr "Pickup instructions (optional)" @@ -1340,7 +1331,7 @@ msgstr "Please check the submitted fields." msgid "Please check the submitted message." msgstr "Please check the submitted message." -#: lib/who_need_help_web/live/request_live/new.ex:454 +#: lib/who_need_help_web/live/request_live/new.ex:501 #, elixir-autogen, elixir-format msgid "Podil, near the central pharmacy" msgstr "Podil, near the central pharmacy" @@ -1439,13 +1430,13 @@ msgstr "Publish activity" msgid "Publish proposal" msgstr "Publish proposal" -#: lib/who_need_help_web/live/request_live/new.ex:690 +#: lib/who_need_help_web/live/request_live/new.ex:745 #, elixir-autogen, elixir-format msgid "Publish request" msgstr "Publish request" #: lib/who_need_help_web/live/activity_live/new.ex:353 -#: lib/who_need_help_web/live/request_live/new.ex:688 +#: lib/who_need_help_web/live/request_live/new.ex:743 #, elixir-autogen, elixir-format msgid "Publishing…" msgstr "Publishing…" @@ -1685,10 +1676,10 @@ msgid "Save profile" msgstr "Save profile" #: lib/who_need_help_web/live/notification_live.ex:723 -#: lib/who_need_help_web/live/request_live/index.ex:266 -#: lib/who_need_help_web/live/request_live/index.ex:267 -#: lib/who_need_help_web/live/request_live/index.ex:349 -#: lib/who_need_help_web/live/request_live/new.ex:412 +#: lib/who_need_help_web/live/request_live/index.ex:301 +#: lib/who_need_help_web/live/request_live/index.ex:302 +#: lib/who_need_help_web/live/request_live/index.ex:411 +#: lib/who_need_help_web/live/request_live/new.ex:452 #: lib/who_need_help_web/live/request_live/show.ex:947 #: lib/who_need_help_web/live/request_live/show.ex:948 #, elixir-autogen, elixir-format @@ -1717,7 +1708,7 @@ msgstr "Set CODEX_SESSION_ID in the deployment environment before the submission msgid "Share location" msgstr "Share location" -#: lib/who_need_help_web/live/request_live/new.ex:399 +#: lib/who_need_help_web/live/request_live/new.ex:428 #, elixir-autogen, elixir-format msgid "Share only non-sensitive instructions. Exact details can wait for the matched chat." msgstr "Share only non-sensitive instructions. Exact details can wait for the matched chat." @@ -1728,7 +1719,7 @@ msgid "Short bio" msgstr "Short bio" #: lib/who_need_help_web/live/activity_live/new.ex:266 -#: lib/who_need_help_web/live/request_live/new.ex:383 +#: lib/who_need_help_web/live/request_live/new.ex:412 #, elixir-autogen, elixir-format msgid "Short title" msgstr "Short title" @@ -1950,7 +1941,7 @@ msgstr "This activity state has already changed." msgid "This interaction is blocked." msgstr "This interaction is blocked." -#: lib/who_need_help_web/live/request_live/index.ex:314 +#: lib/who_need_help_web/live/request_live/index.ex:349 #: lib/who_need_help_web/live/request_live/show.ex:1022 #, elixir-autogen, elixir-format msgid "This is not an emergency service. Contact local emergency services for immediate danger." @@ -1998,10 +1989,10 @@ msgid "To see sent emails, visit" msgstr "To see sent emails, visit" #: lib/who_need_help_web/live/notification_live.ex:722 -#: lib/who_need_help_web/live/request_live/index.ex:264 -#: lib/who_need_help_web/live/request_live/index.ex:265 -#: lib/who_need_help_web/live/request_live/index.ex:348 -#: lib/who_need_help_web/live/request_live/new.ex:411 +#: lib/who_need_help_web/live/request_live/index.ex:299 +#: lib/who_need_help_web/live/request_live/index.ex:300 +#: lib/who_need_help_web/live/request_live/index.ex:410 +#: lib/who_need_help_web/live/request_live/new.ex:451 #: lib/who_need_help_web/live/request_live/show.ex:945 #: lib/who_need_help_web/live/request_live/show.ex:946 #, elixir-autogen, elixir-format @@ -2080,8 +2071,8 @@ msgid "Update email instructions" msgstr "Update email instructions" #: lib/who_need_help_web/live/notification_live.ex:716 -#: lib/who_need_help_web/live/request_live/index.ex:344 -#: lib/who_need_help_web/live/request_live/new.ex:408 +#: lib/who_need_help_web/live/request_live/index.ex:406 +#: lib/who_need_help_web/live/request_live/new.ex:448 #, elixir-autogen, elixir-format msgid "Urgency" msgstr "Urgency" @@ -2209,7 +2200,8 @@ msgstr "What happened?" msgid "What help category is missing?" msgstr "What help category is missing?" -#: lib/who_need_help_web/live/request_live/new.ex:389 +#: lib/who_need_help_web/live/request_live/new.ex:294 +#: lib/who_need_help_web/live/request_live/new.ex:418 #, elixir-autogen, elixir-format msgid "What help do you need?" msgstr "What help do you need?" @@ -2229,7 +2221,7 @@ msgstr "Who Need Help home" msgid "Who Need Help was developed with the local Codex CLI authenticated through the builder's ChatGPT subscription. No OpenAI API key or usage-based API fallback is used." msgstr "Who Need Help was developed with the local Codex CLI authenticated through the builder's ChatGPT subscription. No OpenAI API key or usage-based API fallback is used." -#: lib/who_need_help_web/live/request_live/index.ex:299 +#: lib/who_need_help_web/live/request_live/index.ex:334 #, elixir-autogen, elixir-format msgid "Who needs help?" msgstr "Who needs help?" @@ -2251,7 +2243,7 @@ msgstr "Write a safe coordination message…" #: lib/who_need_help_web/live/activity_live/new.ex:239 #: lib/who_need_help_web/live/activity_live/show.ex:298 -#: lib/who_need_help_web/live/request_live/new.ex:348 +#: lib/who_need_help_web/live/request_live/new.ex:374 #: lib/who_need_help_web/live/request_live/show.ex:875 #: lib/who_need_help_web/live/request_live/show.ex:1431 #: lib/who_need_help_web/live/request_live/show.ex:1439 @@ -2322,11 +2314,6 @@ msgstr "You must re-authenticate to access this page." msgid "You need to reauthenticate to perform sensitive actions on your account." msgstr "You need to reauthenticate to perform sensitive actions on your account." -#: lib/who_need_help_web/live/activity_live/index.ex:302 -#, elixir-autogen, elixir-format -msgid "Your activities" -msgstr "Your activities" - #: lib/who_need_help_web/live/request_live/show.ex:184 #, elixir-autogen, elixir-format msgid "Your confirmation was saved." @@ -2343,7 +2330,6 @@ msgid "Your request is now visible to nearby helpers." msgstr "Your request is now visible to nearby helpers." #: lib/who_need_help_web/controllers/support_html/index.html.heex:6 -#: lib/who_need_help_web/live/request_live/index.ex:559 #, elixir-autogen, elixir-format msgid "Your requests" msgstr "Your requests" @@ -2353,7 +2339,7 @@ msgstr "Your requests" msgid "Your review is revealed only after both participants submit." msgstr "Your review is revealed only after both participants submit." -#: lib/who_need_help_web/live/request_live/index.ex:538 +#: lib/who_need_help_web/live/request_live/index.ex:602 #, elixir-autogen, elixir-format msgid "Your trust summary" msgstr "Your trust summary" @@ -2374,17 +2360,17 @@ msgstr "activity message" msgid "before confirming." msgstr "before confirming." -#: lib/who_need_help_web/live/activity_live/index.ex:269 +#: lib/who_need_help_web/live/activity_live/index.ex:464 #: lib/who_need_help_web/live/category_proposal_live.ex:188 #: lib/who_need_help_web/live/moderation_live.ex:372 -#: lib/who_need_help_web/live/request_live/index.ex:473 +#: lib/who_need_help_web/live/request_live/index.ex:536 #, elixir-autogen, elixir-format msgid "by %{name}" msgstr "by %{name}" #: lib/who_need_help_web/live/profile_live.ex:194 #: lib/who_need_help_web/live/public_profile_live.ex:133 -#: lib/who_need_help_web/live/request_live/index.ex:542 +#: lib/who_need_help_web/live/request_live/index.ex:606 #: lib/who_need_help_web/live/request_live/show.ex:1374 #, elixir-autogen, elixir-format msgid "completed" @@ -2420,7 +2406,7 @@ msgstr "organizer" msgid "participants only" msgstr "participants only" -#: lib/who_need_help_web/live/request_live/index.ex:546 +#: lib/who_need_help_web/live/request_live/index.ex:610 #: lib/who_need_help_web/live/request_live/show.ex:1378 #, elixir-autogen, elixir-format msgid "people" @@ -2480,7 +2466,7 @@ msgstr "urgent" #: lib/who_need_help_web/live/activity_live/show.ex:701 #: lib/who_need_help_web/live/profile_live.ex:289 #: lib/who_need_help_web/live/public_profile_live.ex:98 -#: lib/who_need_help_web/live/request_live/index.ex:550 +#: lib/who_need_help_web/live/request_live/index.ex:614 #: lib/who_need_help_web/live/request_live/show.ex:1093 #: lib/who_need_help_web/live/request_live/show.ex:1476 #, elixir-autogen, elixir-format @@ -2513,8 +2499,8 @@ msgstr "← Requests" msgid "Approved" msgstr "Approved" -#: lib/who_need_help_web/live/request_live/index.ex:280 -#: lib/who_need_help_web/live/request_live/index.ex:281 +#: lib/who_need_help_web/live/request_live/index.ex:315 +#: lib/who_need_help_web/live/request_live/index.ex:316 #, elixir-autogen, elixir-format msgid "Expired" msgstr "Expired" @@ -2567,8 +2553,8 @@ msgstr "Unusual action rate" msgid "Load earlier messages" msgstr "Load earlier messages" -#: lib/who_need_help_web/live/activity_live/index.ex:281 -#: lib/who_need_help_web/live/activity_live/index.ex:320 +#: lib/who_need_help_web/live/activity_live/index.ex:476 +#: lib/who_need_help_web/live/activity_live/index.ex:564 #: lib/who_need_help_web/live/category_proposal_live.ex:220 #: lib/who_need_help_web/live/leaderboard_live.ex:91 #: lib/who_need_help_web/live/moderation_live.ex:465 @@ -2580,16 +2566,15 @@ msgstr "Load earlier messages" #: lib/who_need_help_web/live/profile_live.ex:367 #: lib/who_need_help_web/live/public_profile_live.ex:178 #: lib/who_need_help_web/live/report_live.ex:98 -#: lib/who_need_help_web/live/request_live/index.ex:577 +#: lib/who_need_help_web/live/request_live/index.ex:671 #: lib/who_need_help_web/live/support_operations_live.ex:306 #: lib/who_need_help_web/live/support_operations_live.ex:505 #, elixir-autogen, elixir-format msgid "Load more" msgstr "Load more" -#: lib/who_need_help_web/live/activity_live/index.ex:292 #: lib/who_need_help_web/live/activity_live/show.ex:543 -#: lib/who_need_help_web/live/request_live/index.ex:519 +#: lib/who_need_help_web/live/request_live/index.ex:582 #: lib/who_need_help_web/live/request_live/show.ex:1275 #, elixir-autogen, elixir-format msgid "The map is unavailable in this browser. Request details remain usable." @@ -3983,7 +3968,7 @@ msgstr "" msgid "A volunteer accepted this request. Use private chat to coordinate safely." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:589 +#: lib/who_need_help_web/live/request_live/new.ex:636 #, elixir-autogen, elixir-format msgid "After a helper accepts" msgstr "" @@ -3993,12 +3978,12 @@ msgstr "" msgid "Already registered? Check your email" msgstr "Already registered? Check your email" -#: lib/who_need_help_web/live/request_live/new.ex:453 +#: lib/who_need_help_web/live/request_live/new.ex:500 #, elixir-autogen, elixir-format msgid "Area or public landmark" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:553 +#: lib/who_need_help_web/live/request_live/new.ex:600 #, elixir-autogen, elixir-format msgid "Area radius" msgstr "" @@ -4029,8 +4014,8 @@ msgstr "Check your email to finish registration" msgid "Choose a category from the same mode." msgstr "Choose a category from the same mode." -#: lib/who_need_help_web/live/request_live/new.ex:434 -#: lib/who_need_help_web/live/request_live/new.ex:606 +#: lib/who_need_help_web/live/request_live/new.ex:475 +#: lib/who_need_help_web/live/request_live/new.ex:653 #, elixir-autogen, elixir-format msgid "Choose a place on the map or use your current location." msgstr "" @@ -4073,7 +4058,7 @@ msgid "Date" msgstr "" #: lib/who_need_help_web/live/notification_live.ex:656 -#: lib/who_need_help_web/live/request_live/new.ex:614 +#: lib/who_need_help_web/live/request_live/new.ex:661 #, elixir-autogen, elixir-format msgid "Enter coordinates manually" msgstr "" @@ -4083,17 +4068,17 @@ msgstr "" msgid "Enter the six digits shown to the requester." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:488 +#: lib/who_need_help_web/live/request_live/new.ex:535 #, elixir-autogen, elixir-format msgid "Exact point" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:680 +#: lib/who_need_help_web/live/request_live/new.ex:735 #, elixir-autogen, elixir-format msgid "Fix the following details and publish again:" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:616 +#: lib/who_need_help_web/live/request_live/new.ex:663 #, elixir-autogen, elixir-format msgid "For an approximate area, these coordinates are the area center—not your exact position." msgstr "" @@ -4134,7 +4119,7 @@ msgstr "" msgid "Helper:" msgstr "Helper:" -#: lib/who_need_help_web/live/request_live/new.ex:534 +#: lib/who_need_help_web/live/request_live/new.ex:581 #, elixir-autogen, elixir-format msgid "Helpers will see only the area or landmark written above. You can share a live location later after matching." msgstr "" @@ -4149,29 +4134,29 @@ msgstr "" msgid "If this email belongs to an existing account, a secure sign-in link will arrive shortly." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:420 +#: lib/who_need_help_web/live/request_live/new.ex:460 #, elixir-autogen, elixir-format msgid "In 1 hour" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:421 +#: lib/who_need_help_web/live/request_live/new.ex:461 #, elixir-autogen, elixir-format msgid "In 3 hours" msgstr "" #: lib/who_need_help_web/live/notification_live.ex:574 -#: lib/who_need_help_web/live/request_live/new.ex:444 +#: lib/who_need_help_web/live/request_live/new.ex:485 #, elixir-autogen, elixir-format msgid "Location is unavailable in this browser." msgstr "" #: lib/who_need_help_web/live/notification_live.ex:576 -#: lib/who_need_help_web/live/request_live/new.ex:446 +#: lib/who_need_help_web/live/request_live/new.ex:487 #, elixir-autogen, elixir-format msgid "Location permission was denied." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:574 +#: lib/who_need_help_web/live/request_live/new.ex:621 #, elixir-autogen, elixir-format msgid "Move the map area so it covers a useful public meeting place." msgstr "" @@ -4181,17 +4166,17 @@ msgstr "" msgid "New notice" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:532 +#: lib/who_need_help_web/live/request_live/new.ex:579 #, elixir-autogen, elixir-format msgid "No coordinates will be stored" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:443 +#: lib/who_need_help_web/live/request_live/new.ex:484 #, elixir-autogen, elixir-format msgid "No map coordinates will be stored." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:502 +#: lib/who_need_help_web/live/request_live/new.ex:549 #, elixir-autogen, elixir-format msgid "No map location" msgstr "" @@ -4206,7 +4191,7 @@ msgstr "No public social links added." msgid "Only notices submitted while signed in appear here. Notices submitted without an account remain accessible through their private email link." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:503 +#: lib/who_need_help_web/live/request_live/new.ex:550 #, elixir-autogen, elixir-format msgid "Only the public area description" msgstr "" @@ -4248,7 +4233,7 @@ msgstr "" msgid "Read" msgstr "Read" -#: lib/who_need_help_web/live/request_live/new.ex:475 +#: lib/who_need_help_web/live/request_live/new.ex:522 #, elixir-autogen, elixir-format msgid "Recommended for privacy" msgstr "" @@ -4263,7 +4248,7 @@ msgstr "Register instead" msgid "Registration request accepted" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:417 +#: lib/who_need_help_web/live/request_live/new.ex:457 #, elixir-autogen, elixir-format, fuzzy msgid "Request expires" msgstr "Request expires" @@ -4273,7 +4258,7 @@ msgstr "Request expires" msgid "Request to join again" msgstr "Request to join again" -#: lib/who_need_help_web/live/request_live/new.ex:679 +#: lib/who_need_help_web/live/request_live/new.ex:734 #, elixir-autogen, elixir-format msgid "Request was not published" msgstr "" @@ -4326,7 +4311,7 @@ msgstr "Starts at" msgid "Status updates go to the email address of your signed-in account." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:515 +#: lib/who_need_help_web/live/request_live/new.ex:562 #, elixir-autogen, elixir-format msgid "The map is unavailable. You can use the manual coordinate fallback." msgstr "" @@ -4341,7 +4326,7 @@ msgstr "" msgid "This activity is closed. The group chat remains available as read-only history." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:457 +#: lib/who_need_help_web/live/request_live/new.ex:504 #, elixir-autogen, elixir-format msgid "This description is visible to everyone. Do not enter a private address." msgstr "" @@ -4371,7 +4356,7 @@ msgstr "" msgid "This person has not added a public bio yet." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:581 +#: lib/who_need_help_web/live/request_live/new.ex:628 #, elixir-autogen, elixir-format msgid "This point is public" msgstr "" @@ -4402,12 +4387,12 @@ msgstr "This request was cancelled." msgid "Time" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:422 +#: lib/who_need_help_web/live/request_live/new.ex:462 #, elixir-autogen, elixir-format msgid "Tomorrow" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:582 +#: lib/who_need_help_web/live/request_live/new.ex:629 #, elixir-autogen, elixir-format msgid "Use a safe public meeting point instead of a private address." msgstr "" @@ -4418,7 +4403,7 @@ msgid "Use another email" msgstr "" #: lib/who_need_help_web/live/notification_live.ex:609 -#: lib/who_need_help_web/live/request_live/new.ex:549 +#: lib/who_need_help_web/live/request_live/new.ex:596 #, elixir-autogen, elixir-format, fuzzy msgid "Use my location" msgstr "Use my location" @@ -4456,7 +4441,7 @@ msgstr "" msgid "View my requests" msgstr "View my requests" -#: lib/who_need_help_web/live/request_live/new.ex:489 +#: lib/who_need_help_web/live/request_live/new.ex:536 #, elixir-autogen, elixir-format msgid "Visible before matching" msgstr "" @@ -4471,12 +4456,12 @@ msgstr "" msgid "Voted" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:462 +#: lib/who_need_help_web/live/request_live/new.ex:509 #, elixir-autogen, elixir-format msgid "What should people see?" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:450 +#: lib/who_need_help_web/live/request_live/new.ex:493 #, elixir-autogen, elixir-format msgid "Where is help needed?" msgstr "" @@ -4491,7 +4476,7 @@ msgstr "" msgid "You are not a participant. You can send a new request while registration is open." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:591 +#: lib/who_need_help_web/live/request_live/new.ex:638 #, elixir-autogen, elixir-format msgid "You can separately share live location with the matched person and stop sharing at any time." msgstr "" @@ -4511,7 +4496,7 @@ msgstr "" msgid "Your completion confirmation is saved." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:573 +#: lib/who_need_help_web/live/request_live/new.ex:620 #, elixir-autogen, elixir-format msgid "Your exact position is not shown" msgstr "" @@ -4536,69 +4521,71 @@ msgstr "" msgid "← Community helpers" msgstr "← Community helpers" -#: lib/who_need_help_web/live/request_live/new.ex:436 +#: lib/who_need_help_web/live/request_live/new.ex:477 #, elixir-autogen, elixir-format msgid "Area selected. Drag the green pin or click the map to move it." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:523 +#: lib/who_need_help_web/live/request_live/new.ex:570 #, elixir-autogen, elixir-format msgid "Click the map or drag the green pin to move the area" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:526 +#: lib/who_need_help_web/live/request_live/new.ex:573 #, elixir-autogen, elixir-format msgid "Click the map or drag the red pin to move the point" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:441 +#: lib/who_need_help_web/live/request_live/new.ex:482 #, elixir-autogen, elixir-format msgid "Drag to move the approximate area" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:442 +#: lib/who_need_help_web/live/request_live/new.ex:483 #, elixir-autogen, elixir-format msgid "Drag to move the exact point" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:439 +#: lib/who_need_help_web/live/request_live/new.ex:480 #, elixir-autogen, elixir-format msgid "Exact point selected. Drag the red pin or click the map to move it." msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:371 +#: lib/who_need_help_web/live/request_live/index.ex:434 #, elixir-autogen, elixir-format msgid "%{count} request in this map area" msgid_plural "%{count} requests in this map area" msgstr[0] "" msgstr[1] "" -#: lib/who_need_help_web/live/request_live/index.ex:354 +#: lib/who_need_help_web/live/activity_live/index.ex:396 +#: lib/who_need_help_web/live/request_live/index.ex:416 #, elixir-autogen, elixir-format msgid "Area or city" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:424 +#: lib/who_need_help_web/live/activity_live/index.ex:412 +#: lib/who_need_help_web/live/request_live/index.ex:487 #, elixir-autogen, elixir-format msgid "Choose an area on the map" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:301 +#: lib/who_need_help_web/live/request_live/index.ex:336 #, elixir-autogen, elixir-format msgid "Explore privacy-friendly areas and public exact meeting points chosen by requesters." msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:392 +#: lib/who_need_help_web/live/request_live/index.ex:455 #, elixir-autogen, elixir-format msgid "List" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:495 +#: lib/who_need_help_web/live/request_live/index.ex:558 #, elixir-autogen, elixir-format msgid "Load more in this area" msgstr "Load more in this area" -#: lib/who_need_help_web/live/request_live/index.ex:412 +#: lib/who_need_help_web/live/request_live/index.ex:475 #, elixir-autogen, elixir-format msgid "Map" msgstr "" @@ -4608,47 +4595,50 @@ msgstr "" msgid "Map preview" msgstr "Map preview" -#: lib/who_need_help_web/live/request_live/index.ex:436 +#: lib/who_need_help_web/live/activity_live/index.ex:424 +#: lib/who_need_help_web/live/request_live/index.ex:499 #, elixir-autogen, elixir-format msgid "Move or zoom the map to search somewhere else." msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:379 +#: lib/who_need_help_web/live/request_live/index.ex:442 #, elixir-autogen, elixir-format msgid "Move the map, then search the newly visible area." msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:434 +#: lib/who_need_help_web/live/request_live/index.ex:497 #, elixir-autogen, elixir-format msgid "No open requests in this area" msgstr "No open requests in this area" -#: lib/who_need_help_web/live/request_live/index.ex:426 +#: lib/who_need_help_web/live/request_live/index.ex:489 #, elixir-autogen, elixir-format msgid "Only requests from the selected map area will be loaded." msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:522 +#: lib/who_need_help_web/live/request_live/index.ex:585 #, elixir-autogen, elixir-format msgid "Open request" msgstr "Open request" -#: lib/who_need_help_web/live/request_live/index.ex:355 +#: lib/who_need_help_web/live/activity_live/index.ex:397 +#: lib/who_need_help_web/live/request_live/index.ex:417 #, elixir-autogen, elixir-format msgid "Optional text search" msgstr "Optional text search" -#: lib/who_need_help_web/live/request_live/index.ex:501 +#: lib/who_need_help_web/live/request_live/index.ex:564 #, elixir-autogen, elixir-format msgid "Requests without map coordinates appear only when their public area description matches the text search." msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:383 +#: lib/who_need_help_web/live/request_live/index.ex:446 #, elixir-autogen, elixir-format msgid "Results layout" msgstr "" -#: lib/who_need_help_web/live/request_live/index.ex:533 +#: lib/who_need_help_web/live/activity_live/index.ex:508 +#: lib/who_need_help_web/live/request_live/index.ex:597 #, elixir-autogen, elixir-format msgid "Search this area" msgstr "" @@ -4658,19 +4648,19 @@ msgstr "" msgid "Static preview" msgstr "Static preview" -#: lib/who_need_help_web/live/request_live/index.ex:402 +#: lib/who_need_help_web/live/request_live/index.ex:465 #, elixir-autogen, elixir-format msgid "Together" msgstr "" #: lib/who_need_help_web/controllers/page_html/home.html.heex:160 -#: lib/who_need_help_web/live/activity_live/index.ex:294 +#: lib/who_need_help_web/live/activity_live/index.ex:496 #: lib/who_need_help_web/live/activity_live/show.ex:545 #: lib/who_need_help_web/live/notification_live.ex:575 #: lib/who_need_help_web/live/notification_live.ex:594 -#: lib/who_need_help_web/live/request_live/index.ex:521 -#: lib/who_need_help_web/live/request_live/new.ex:445 -#: lib/who_need_help_web/live/request_live/new.ex:517 +#: lib/who_need_help_web/live/request_live/index.ex:584 +#: lib/who_need_help_web/live/request_live/new.ex:486 +#: lib/who_need_help_web/live/request_live/new.ex:564 #: lib/who_need_help_web/live/request_live/show.ex:1277 #, elixir-autogen, elixir-format msgid "Try map again" @@ -5056,6 +5046,7 @@ msgid "Nearby alert deleted." msgstr "" #: lib/who_need_help_web/live/notification_live.ex:429 +#: lib/who_need_help_web/live/request_live/index.ex:362 #, elixir-autogen, elixir-format msgid "Nearby requests" msgstr "" @@ -5393,7 +5384,7 @@ msgstr "Selected example:" msgid "WebGL is unavailable in this browser, so the full map cannot start. Select an example below or retry the map." msgstr "WebGL is unavailable in this browser, so the full map cannot start. Select an example below or retry the map." -#: lib/who_need_help_web/live/activity_live/index.ex:295 +#: lib/who_need_help_web/live/activity_live/index.ex:497 #: lib/who_need_help_web/live/activity_live/show.ex:546 #: lib/who_need_help_web/live/request_live/show.ex:1278 #, elixir-autogen, elixir-format @@ -5487,7 +5478,7 @@ msgstr "Help request" msgid "I confirm this is not an emergency or request for medical advice, the medicine and arrangement are lawful, and a volunteer chooses whether to spend money." msgstr "I confirm this is not an emergency or request for medical advice, the medicine and arrangement are lawful, and a volunteer chooses whether to spend money." -#: lib/who_need_help_web/live/request_live/new.ex:376 +#: lib/who_need_help_web/live/request_live/new.ex:405 #, elixir-autogen, elixir-format msgid "If purchase is needed, accepting the request does not require the volunteer to spend money. Agree on the medicine, pharmacy requirements, payment, and any reimbursement only in the private matched chat." msgstr "If purchase is needed, accepting the request does not require the volunteer to spend money. Agree on the medicine, pharmacy requirements, payment, and any reimbursement only in the private matched chat." @@ -5958,7 +5949,7 @@ msgstr "Your review is now visible" msgid "Delivery settings" msgstr "Delivery settings" -#: lib/who_need_help_web/live/request_live/index.ex:478 +#: lib/who_need_help_web/live/request_live/index.ex:541 #, elixir-autogen, elixir-format msgid "Expires" msgstr "Expires" @@ -5977,3 +5968,156 @@ msgstr "Nearby alerts" #, elixir-autogen, elixir-format msgid "Notification sections" msgstr "Notification sections" + +#: lib/who_need_help_web/live/activity_live/index.ex:492 +#, elixir-autogen, elixir-format +msgid "%{count} activities" +msgstr "%{count} activities" + +#: lib/who_need_help_web/live/activity_live/index.ex:512 +#, elixir-autogen, elixir-format +msgid "%{count} activity in this map area" +msgid_plural "%{count} activities in this map area" +msgstr[0] "%{count} activity in this map area" +msgstr[1] "%{count} activities in this map area" + +#: lib/who_need_help_web/live/request_live/index.ex:586 +#, elixir-autogen, elixir-format +msgid "%{count} requests" +msgstr "%{count} requests" + +#: lib/who_need_help_web/live/activity_live/index.ex:530 +#, elixir-autogen, elixir-format +msgid "Activities you create or ask to join will appear here. Leaving removes an activity from this list." +msgstr "Activities you create or ask to join will appear here. Leaving removes an activity from this list." + +#: lib/who_need_help_web/live/activity_live/index.ex:351 +#, elixir-autogen, elixir-format +msgid "Activity views" +msgstr "Activity views" + +#: lib/who_need_help_web/live/request_live/new.ex:295 +#, elixir-autogen, elixir-format +msgid "Choose a category and describe the task clearly." +msgstr "Choose a category and describe the task clearly." + +#: lib/who_need_help_web/live/request_live/new.ex:713 +#, elixir-autogen, elixir-format +msgid "Confirm the safety guidance before asking nearby people for help." +msgstr "Confirm the safety guidance before asking nearby people for help." + +#: lib/who_need_help_web/live/request_live/index.ex:631 +#, elixir-autogen, elixir-format +msgid "Create request" +msgstr "Create request" + +#: lib/who_need_help_web/live/request_live/index.ex:645 +#, elixir-autogen, elixir-format +msgid "Create your first request" +msgstr "Create your first request" + +#: lib/who_need_help_web/live/request_live/new.ex:277 +#, elixir-autogen, elixir-format +msgid "Help details" +msgstr "Help details" + +#: lib/who_need_help_web/live/request_live/new.ex:279 +#, elixir-autogen, elixir-format +msgid "Location" +msgstr "Location" + +#: lib/who_need_help_web/live/activity_live/index.ex:357 +#, elixir-autogen, elixir-format +msgid "My activities" +msgstr "My activities" + +#: lib/who_need_help_web/live/request_live/index.ex:363 +#: lib/who_need_help_web/live/request_live/index.ex:625 +#, elixir-autogen, elixir-format +msgid "My requests" +msgstr "My requests" + +#: lib/who_need_help_web/live/activity_live/index.ex:356 +#, elixir-autogen, elixir-format +msgid "Nearby activities" +msgstr "Nearby activities" + +#: lib/who_need_help_web/live/activity_live/index.ex:528 +#, elixir-autogen, elixir-format +msgid "No activities yet" +msgstr "No activities yet" + +#: lib/who_need_help_web/live/activity_live/index.ex:422 +#, elixir-autogen, elixir-format +msgid "No open activities in this area" +msgstr "No open activities in this area" + +#: lib/who_need_help_web/live/request_live/index.ex:640 +#, elixir-autogen, elixir-format +msgid "No requests yet" +msgstr "No requests yet" + +#: lib/who_need_help_web/live/activity_live/index.ex:414 +#, elixir-autogen, elixir-format +msgid "Only activities from the selected map area will be loaded." +msgstr "Only activities from the selected map area will be loaded." + +#: lib/who_need_help_web/live/activity_live/index.ex:491 +#, elixir-autogen, elixir-format +msgid "Open activity" +msgstr "Open activity" + +#: lib/who_need_help_web/live/request_live/new.ex:273 +#, elixir-autogen, elixir-format +msgid "Request form steps" +msgstr "Request form steps" + +#: lib/who_need_help_web/live/request_live/index.ex:357 +#, elixir-autogen, elixir-format +msgid "Request views" +msgstr "Request views" + +#: lib/who_need_help_web/live/request_live/index.ex:642 +#, elixir-autogen, elixir-format +msgid "Requests you publish or accept will appear here." +msgstr "Requests you publish or accept will appear here." + +#: lib/who_need_help_web/live/request_live/new.ex:280 +#, elixir-autogen, elixir-format +msgid "Review" +msgstr "Review" + +#: lib/who_need_help_web/live/request_live/new.ex:712 +#, elixir-autogen, elixir-format +msgid "Review and publish" +msgstr "Review and publish" + +#: lib/who_need_help_web/live/request_live/new.ex:441 +#, elixir-autogen, elixir-format +msgid "Set urgency and when this request should close." +msgstr "Set urgency and when this request should close." + +#: lib/who_need_help_web/live/request_live/new.ex:494 +#, elixir-autogen, elixir-format +msgid "Share only as much location detail as helpers need." +msgstr "Share only as much location detail as helpers need." + +#: lib/who_need_help_web/live/activity_live/index.ex:494 +#, elixir-autogen, elixir-format +msgid "The map is unavailable in this browser. Activity details remain usable." +msgstr "The map is unavailable in this browser. Activity details remain usable." + +#: lib/who_need_help_web/live/request_live/new.ex:278 +#, elixir-autogen, elixir-format +msgid "Timing" +msgstr "Timing" + +#: lib/who_need_help_web/live/request_live/index.ex:627 +#, elixir-autogen, elixir-format +msgid "Track requests you created and requests you accepted as a helper." +msgstr "Track requests you created and requests you accepted as a helper." + +#: lib/who_need_help_web/live/request_live/new.ex:440 +#, elixir-autogen, elixir-format +msgid "When is help needed?" +msgstr "When is help needed?" diff --git a/priv/gettext/ru/LC_MESSAGES/default.po b/priv/gettext/ru/LC_MESSAGES/default.po index 11f9739..b5e2843 100644 --- a/priv/gettext/ru/LC_MESSAGES/default.po +++ b/priv/gettext/ru/LC_MESSAGES/default.po @@ -185,7 +185,7 @@ msgid "Active" msgstr "Активный" #: lib/who_need_help_web/components/layouts.ex:231 -#: lib/who_need_help_web/live/activity_live/index.ex:118 +#: lib/who_need_help_web/live/activity_live/index.ex:29 #, elixir-autogen, elixir-format msgid "Activities" msgstr "Активности" @@ -227,7 +227,7 @@ msgstr "Активность опубликована. Вы одобряете msgid "Activity restored." msgstr "Активность восстановлена." -#: lib/who_need_help_web/live/activity_live/index.ex:210 +#: lib/who_need_help_web/live/activity_live/index.ex:385 #: lib/who_need_help_web/live/activity_live/new.ex:174 #, elixir-autogen, elixir-format msgid "Activity type" @@ -244,12 +244,12 @@ msgstr "Добавить неподтверждённую ссылку" msgid "Administrator" msgstr "Администратор" -#: lib/who_need_help_web/live/activity_live/index.ex:212 +#: lib/who_need_help_web/live/activity_live/index.ex:387 #, elixir-autogen, elixir-format msgid "All activities" msgstr "Все активности" -#: lib/who_need_help_web/live/request_live/index.ex:331 +#: lib/who_need_help_web/live/request_live/index.ex:393 #, elixir-autogen, elixir-format msgid "All categories" msgstr "Все категории" @@ -264,7 +264,7 @@ msgstr "Уже зарегистрированы?" msgid "Another helper already accepted this request." msgstr "Другой помощник уже принял эту заявку." -#: lib/who_need_help_web/live/request_live/index.ex:346 +#: lib/who_need_help_web/live/request_live/index.ex:408 #, elixir-autogen, elixir-format msgid "Any urgency" msgstr "Любая срочность" @@ -291,7 +291,7 @@ msgstr "Одобренные участники" #: lib/who_need_help_web/controllers/page_html/home.html.heex:80 #: lib/who_need_help_web/live/activity_live/new.ex:303 -#: lib/who_need_help_web/live/request_live/new.ex:474 +#: lib/who_need_help_web/live/request_live/new.ex:521 #, elixir-autogen, elixir-format msgid "Approximate area" msgstr "Примерный район" @@ -389,17 +389,17 @@ msgstr "Отменить активность" msgid "Cancel request" msgstr "Отменить заявку" -#: lib/who_need_help_web/live/activity_live/index.ex:168 +#: lib/who_need_help_web/live/activity_live/index.ex:316 #: lib/who_need_help_web/live/activity_live/show.ex:344 -#: lib/who_need_help_web/live/request_live/index.ex:278 -#: lib/who_need_help_web/live/request_live/index.ex:279 +#: lib/who_need_help_web/live/request_live/index.ex:313 +#: lib/who_need_help_web/live/request_live/index.ex:314 #: lib/who_need_help_web/live/request_live/show.ex:956 #, elixir-autogen, elixir-format msgid "Cancelled" msgstr "Отменено" -#: lib/who_need_help_web/live/request_live/index.ex:329 -#: lib/who_need_help_web/live/request_live/new.ex:276 +#: lib/who_need_help_web/live/request_live/index.ex:391 +#: lib/who_need_help_web/live/request_live/new.ex:302 #, elixir-autogen, elixir-format msgid "Category" msgstr "Категория" @@ -409,7 +409,7 @@ msgstr "Категория" msgid "Category created and proposal approved." msgstr "Категория создана и предложение одобрено." -#: lib/who_need_help_web/live/request_live/new.ex:307 +#: lib/who_need_help_web/live/request_live/new.ex:333 #: lib/who_need_help_web/live/request_live/show.ex:1048 #, elixir-autogen, elixir-format msgid "Category details" @@ -448,15 +448,15 @@ msgstr "" msgid "Choose activity" msgstr "Выберите активность" -#: lib/who_need_help_web/live/request_live/new.ex:277 +#: lib/who_need_help_web/live/request_live/new.ex:303 #, elixir-autogen, elixir-format msgid "Choose category" msgstr "Выберите категорию" #: lib/who_need_help_web/live/activity_live/new.ex:210 #: lib/who_need_help_web/live/activity_live/new.ex:237 -#: lib/who_need_help_web/live/request_live/new.ex:319 -#: lib/who_need_help_web/live/request_live/new.ex:346 +#: lib/who_need_help_web/live/request_live/new.ex:345 +#: lib/who_need_help_web/live/request_live/new.ex:372 #, elixir-autogen, elixir-format msgid "Choose…" msgstr "Выберите…" @@ -482,7 +482,7 @@ msgstr "Закрыть" msgid "Coffee and conversation" msgstr "Кофе и разговоры" -#: lib/who_need_help_web/live/activity_live/index.ex:182 +#: lib/who_need_help_web/live/activity_live/index.ex:330 #, elixir-autogen, elixir-format msgid "Coffee, cinema, walks, and hikes are separate from urgent help and never affect helper ratings." msgstr "" @@ -499,19 +499,19 @@ msgstr "Комментарий (необязательно)" msgid "Community helpers" msgstr "Помощники сообщества" -#: lib/who_need_help_web/live/activity_live/index.ex:270 +#: lib/who_need_help_web/live/activity_live/index.ex:465 #: lib/who_need_help_web/live/activity_live/show.ex:403 #: lib/who_need_help_web/live/activity_live/show.ex:621 #: lib/who_need_help_web/live/activity_live/show.ex:680 -#: lib/who_need_help_web/live/request_live/index.ex:474 +#: lib/who_need_help_web/live/request_live/index.ex:537 #, elixir-autogen, elixir-format msgid "Community member" msgstr "Член сообщества" -#: lib/who_need_help_web/live/activity_live/index.ex:167 +#: lib/who_need_help_web/live/activity_live/index.ex:315 #: lib/who_need_help_web/live/activity_live/show.ex:343 -#: lib/who_need_help_web/live/request_live/index.ex:276 -#: lib/who_need_help_web/live/request_live/index.ex:277 +#: lib/who_need_help_web/live/request_live/index.ex:311 +#: lib/who_need_help_web/live/request_live/index.ex:312 #: lib/who_need_help_web/live/request_live/show.ex:955 #: lib/who_need_help_web/live/request_live/show.ex:974 #, elixir-autogen, elixir-format @@ -564,17 +564,13 @@ msgstr "Инструкции по подтверждению" msgid "Confirming..." msgstr "Подтверждение…" -#: lib/who_need_help_web/live/activity_live/index.ex:229 -#, elixir-autogen, elixir-format -msgid "Create a clear plan in a public place." -msgstr "Создайте четкий план в общественном месте." - -#: lib/who_need_help_web/live/activity_live/index.ex:188 +#: lib/who_need_help_web/live/activity_live/index.ex:336 #: lib/who_need_help_web/live/activity_live/new.ex:12 #, elixir-autogen, elixir-format msgid "Create activity" msgstr "Создать активность" +#: lib/who_need_help_web/live/activity_live/index.ex:535 #: lib/who_need_help_web/live/activity_live/new.ex:150 #, elixir-autogen, elixir-format msgid "Create an activity" @@ -585,7 +581,7 @@ msgstr "Создать активность" msgid "Create category" msgstr "Создать категорию" -#: lib/who_need_help_web/live/request_live/index.ex:307 +#: lib/who_need_help_web/live/request_live/index.ex:342 #, elixir-autogen, elixir-format msgid "Create urgent request" msgstr "Создать срочную заявку" @@ -752,12 +748,12 @@ msgstr "Публично — точно" msgid "Expires:" msgstr "Истекает:" -#: lib/who_need_help_web/live/request_live/new.ex:391 +#: lib/who_need_help_web/live/request_live/new.ex:420 #, elixir-autogen, elixir-format msgid "Explain what is already arranged and what the volunteer needs to do." msgstr "Объясните, что уже сделано и что нужно сделать волонтеру." -#: lib/who_need_help_web/live/activity_live/index.ex:179 +#: lib/who_need_help_web/live/activity_live/index.ex:327 #, elixir-autogen, elixir-format msgid "Find people to join" msgstr "Найти компанию" @@ -959,8 +955,8 @@ msgstr "" "Android показывает постоянное уведомление и может продолжать передачу после " "сворачивания. При остановке передачи исходные координаты удаляются." -#: lib/who_need_help_web/live/request_live/index.ex:274 -#: lib/who_need_help_web/live/request_live/index.ex:275 +#: lib/who_need_help_web/live/request_live/index.ex:309 +#: lib/who_need_help_web/live/request_live/index.ex:310 #: lib/who_need_help_web/live/request_live/show.ex:954 #, elixir-autogen, elixir-format msgid "In progress" @@ -995,7 +991,7 @@ msgstr "Приём заявок завершается" #: lib/who_need_help_web/live/activity_live/new.ex:327 #: lib/who_need_help_web/live/notification_live.ex:659 -#: lib/who_need_help_web/live/request_live/new.ex:622 +#: lib/who_need_help_web/live/request_live/new.ex:669 #, elixir-autogen, elixir-format msgid "Latitude" msgstr "Широта" @@ -1055,7 +1051,7 @@ msgstr "Вы успешно вышли." #: lib/who_need_help_web/live/activity_live/new.ex:334 #: lib/who_need_help_web/live/notification_live.ex:673 -#: lib/who_need_help_web/live/request_live/new.ex:636 +#: lib/who_need_help_web/live/request_live/new.ex:683 #, elixir-autogen, elixir-format msgid "Longitude" msgstr "Долгота" @@ -1090,8 +1086,8 @@ msgstr "Отметить завершённой" msgid "Match and coordinate" msgstr "Найдите помощника и согласуйте детали" -#: lib/who_need_help_web/live/request_live/index.ex:272 -#: lib/who_need_help_web/live/request_live/index.ex:273 +#: lib/who_need_help_web/live/request_live/index.ex:307 +#: lib/who_need_help_web/live/request_live/index.ex:308 #: lib/who_need_help_web/live/request_live/show.ex:952 #, elixir-autogen, elixir-format msgid "Matched" @@ -1120,7 +1116,7 @@ msgstr "" msgid "Medicine requests" msgstr "Заявки на лекарства" -#: lib/who_need_help_web/live/activity_live/index.ex:195 +#: lib/who_need_help_web/live/activity_live/index.ex:343 #, elixir-autogen, elixir-format msgid "Meet in public first, keep exact details inside the approved group, and leave or report anything that feels unsafe." msgstr "" @@ -1179,12 +1175,12 @@ msgstr "Модератор" msgid "Moderator access is required." msgstr "Требуется доступ модератора." -#: lib/who_need_help_web/live/request_live/index.ex:298 +#: lib/who_need_help_web/live/request_live/index.ex:333 #, elixir-autogen, elixir-format msgid "NEARBY MUTUAL AID" msgstr "ВЗАИМОПОМОЩЬ РЯДОМ" -#: lib/who_need_help_web/live/request_live/index.ex:31 +#: lib/who_need_help_web/live/request_live/index.ex:33 #, elixir-autogen, elixir-format msgid "Nearby help" msgstr "Помощь рядом" @@ -1206,7 +1202,7 @@ msgstr "Новый пароль" #: lib/who_need_help_web/live/activity_live/new.ex:242 #: lib/who_need_help_web/live/activity_live/show.ex:300 -#: lib/who_need_help_web/live/request_live/new.ex:351 +#: lib/who_need_help_web/live/request_live/new.ex:380 #: lib/who_need_help_web/live/request_live/show.ex:877 #, elixir-autogen, elixir-format msgid "No" @@ -1223,11 +1219,6 @@ msgstr "Завершённой помощи пока нет." msgid "No messages yet." msgstr "Сообщений пока нет." -#: lib/who_need_help_web/live/activity_live/index.ex:227 -#, elixir-autogen, elixir-format -msgid "No open activities yet" -msgstr "Открытых активностей пока нет" - #: lib/who_need_help_web/live/moderation_live.ex:537 #, elixir-autogen, elixir-format msgid "No open signals." @@ -1272,17 +1263,17 @@ msgid "Not for emergencies" msgstr "Не для чрезвычайных ситуаций" #: lib/who_need_help_web/live/notification_live.ex:721 -#: lib/who_need_help_web/live/request_live/index.ex:262 -#: lib/who_need_help_web/live/request_live/index.ex:263 -#: lib/who_need_help_web/live/request_live/index.ex:347 -#: lib/who_need_help_web/live/request_live/new.ex:410 +#: lib/who_need_help_web/live/request_live/index.ex:297 +#: lib/who_need_help_web/live/request_live/index.ex:298 +#: lib/who_need_help_web/live/request_live/index.ex:409 +#: lib/who_need_help_web/live/request_live/new.ex:450 #: lib/who_need_help_web/live/request_live/show.ex:943 #: lib/who_need_help_web/live/request_live/show.ex:944 #, elixir-autogen, elixir-format msgid "Now" msgstr "Сейчас" -#: lib/who_need_help_web/live/activity_live/index.ex:177 +#: lib/who_need_help_web/live/activity_live/index.ex:325 #, elixir-autogen, elixir-format msgid "OPTIONAL SOCIAL PLANS" msgstr "НЕОБЯЗАТЕЛЬНЫЕ СОВМЕСТНЫЕ ПЛАНЫ" @@ -1302,12 +1293,12 @@ msgstr "" #: lib/who_need_help/notifications/text.ex:141 #: lib/who_need_help_web/controllers/content_removal_html.ex:21 #: lib/who_need_help_web/controllers/support_html.ex:16 -#: lib/who_need_help_web/live/activity_live/index.ex:166 +#: lib/who_need_help_web/live/activity_live/index.ex:314 #: lib/who_need_help_web/live/activity_live/show.ex:342 #: lib/who_need_help_web/live/moderation_live.ex:258 #: lib/who_need_help_web/live/report_live.ex:104 -#: lib/who_need_help_web/live/request_live/index.ex:270 -#: lib/who_need_help_web/live/request_live/index.ex:271 +#: lib/who_need_help_web/live/request_live/index.ex:305 +#: lib/who_need_help_web/live/request_live/index.ex:306 #: lib/who_need_help_web/live/request_live/show.ex:951 #: lib/who_need_help_web/live/support_operations_live.ex:237 #: lib/who_need_help_web/live/support_operations_live.ex:438 @@ -1394,7 +1385,7 @@ msgstr "Пароль" msgid "Password updated successfully." msgstr "Пароль успешно обновлён." -#: lib/who_need_help_web/live/request_live/new.ex:397 +#: lib/who_need_help_web/live/request_live/new.ex:426 #, elixir-autogen, elixir-format msgid "Pickup instructions (optional)" msgstr "Инструкции для получения (необязательно)" @@ -1430,7 +1421,7 @@ msgstr "Пожалуйста, проверьте представленные п msgid "Please check the submitted message." msgstr "Пожалуйста, проверьте отправленное сообщение." -#: lib/who_need_help_web/live/request_live/new.ex:454 +#: lib/who_need_help_web/live/request_live/new.ex:501 #, elixir-autogen, elixir-format msgid "Podil, near the central pharmacy" msgstr "Подол, рядом с центральной аптекой" @@ -1542,13 +1533,13 @@ msgstr "Опубликовать активность" msgid "Publish proposal" msgstr "Опубликовать предложение" -#: lib/who_need_help_web/live/request_live/new.ex:690 +#: lib/who_need_help_web/live/request_live/new.ex:745 #, elixir-autogen, elixir-format msgid "Publish request" msgstr "Опубликовать заявку" #: lib/who_need_help_web/live/activity_live/new.ex:353 -#: lib/who_need_help_web/live/request_live/new.ex:688 +#: lib/who_need_help_web/live/request_live/new.ex:743 #, elixir-autogen, elixir-format msgid "Publishing…" msgstr "Публикация…" @@ -1794,10 +1785,10 @@ msgid "Save profile" msgstr "Сохранить профиль" #: lib/who_need_help_web/live/notification_live.ex:723 -#: lib/who_need_help_web/live/request_live/index.ex:266 -#: lib/who_need_help_web/live/request_live/index.ex:267 -#: lib/who_need_help_web/live/request_live/index.ex:349 -#: lib/who_need_help_web/live/request_live/new.ex:412 +#: lib/who_need_help_web/live/request_live/index.ex:301 +#: lib/who_need_help_web/live/request_live/index.ex:302 +#: lib/who_need_help_web/live/request_live/index.ex:411 +#: lib/who_need_help_web/live/request_live/new.ex:452 #: lib/who_need_help_web/live/request_live/show.ex:947 #: lib/who_need_help_web/live/request_live/show.ex:948 #, elixir-autogen, elixir-format @@ -1828,7 +1819,7 @@ msgstr "" msgid "Share location" msgstr "Поделиться геопозицией" -#: lib/who_need_help_web/live/request_live/new.ex:399 +#: lib/who_need_help_web/live/request_live/new.ex:428 #, elixir-autogen, elixir-format msgid "Share only non-sensitive instructions. Exact details can wait for the matched chat." msgstr "" @@ -1841,7 +1832,7 @@ msgid "Short bio" msgstr "Кратко о себе" #: lib/who_need_help_web/live/activity_live/new.ex:266 -#: lib/who_need_help_web/live/request_live/new.ex:383 +#: lib/who_need_help_web/live/request_live/new.ex:412 #, elixir-autogen, elixir-format msgid "Short title" msgstr "Краткий заголовок" @@ -2068,7 +2059,7 @@ msgstr "Состояние этой активности уже изменило msgid "This interaction is blocked." msgstr "Это взаимодействие заблокировано." -#: lib/who_need_help_web/live/request_live/index.ex:314 +#: lib/who_need_help_web/live/request_live/index.ex:349 #: lib/who_need_help_web/live/request_live/show.ex:1022 #, elixir-autogen, elixir-format msgid "This is not an emergency service. Contact local emergency services for immediate danger." @@ -2121,10 +2112,10 @@ msgid "To see sent emails, visit" msgstr "Чтобы посмотреть отправленные письма, откройте" #: lib/who_need_help_web/live/notification_live.ex:722 -#: lib/who_need_help_web/live/request_live/index.ex:264 -#: lib/who_need_help_web/live/request_live/index.ex:265 -#: lib/who_need_help_web/live/request_live/index.ex:348 -#: lib/who_need_help_web/live/request_live/new.ex:411 +#: lib/who_need_help_web/live/request_live/index.ex:299 +#: lib/who_need_help_web/live/request_live/index.ex:300 +#: lib/who_need_help_web/live/request_live/index.ex:410 +#: lib/who_need_help_web/live/request_live/new.ex:451 #: lib/who_need_help_web/live/request_live/show.ex:945 #: lib/who_need_help_web/live/request_live/show.ex:946 #, elixir-autogen, elixir-format @@ -2203,8 +2194,8 @@ msgid "Update email instructions" msgstr "Инструкции для изменения электронной почты" #: lib/who_need_help_web/live/notification_live.ex:716 -#: lib/who_need_help_web/live/request_live/index.ex:344 -#: lib/who_need_help_web/live/request_live/new.ex:408 +#: lib/who_need_help_web/live/request_live/index.ex:406 +#: lib/who_need_help_web/live/request_live/new.ex:448 #, elixir-autogen, elixir-format msgid "Urgency" msgstr "Срочность" @@ -2337,7 +2328,8 @@ msgstr "Что случилось?" msgid "What help category is missing?" msgstr "Какая категория помощи отсутствует?" -#: lib/who_need_help_web/live/request_live/new.ex:389 +#: lib/who_need_help_web/live/request_live/new.ex:294 +#: lib/who_need_help_web/live/request_live/new.ex:418 #, elixir-autogen, elixir-format msgid "What help do you need?" msgstr "Какая помощь вам нужна?" @@ -2363,7 +2355,7 @@ msgstr "" "через подписку ChatGPT разработчика. Ключ OpenAI API и резервный вариант API" " с оплатой по использованию не применяются." -#: lib/who_need_help_web/live/request_live/index.ex:299 +#: lib/who_need_help_web/live/request_live/index.ex:334 #, elixir-autogen, elixir-format msgid "Who needs help?" msgstr "Кому нужна помощь?" @@ -2385,7 +2377,7 @@ msgstr "Напишите безопасное сообщение для коор #: lib/who_need_help_web/live/activity_live/new.ex:239 #: lib/who_need_help_web/live/activity_live/show.ex:298 -#: lib/who_need_help_web/live/request_live/new.ex:348 +#: lib/who_need_help_web/live/request_live/new.ex:374 #: lib/who_need_help_web/live/request_live/show.ex:875 #: lib/who_need_help_web/live/request_live/show.ex:1431 #: lib/who_need_help_web/live/request_live/show.ex:1439 @@ -2461,11 +2453,6 @@ msgstr "" "Чтобы выполнять чувствительные действия с учётной записью, нужно повторно " "войти." -#: lib/who_need_help_web/live/activity_live/index.ex:302 -#, elixir-autogen, elixir-format -msgid "Your activities" -msgstr "Ваши активности" - #: lib/who_need_help_web/live/request_live/show.ex:184 #, elixir-autogen, elixir-format msgid "Your confirmation was saved." @@ -2482,7 +2469,6 @@ msgid "Your request is now visible to nearby helpers." msgstr "Теперь вашу заявку видят помощники рядом." #: lib/who_need_help_web/controllers/support_html/index.html.heex:6 -#: lib/who_need_help_web/live/request_live/index.ex:559 #, elixir-autogen, elixir-format msgid "Your requests" msgstr "Ваши запросы" @@ -2493,7 +2479,7 @@ msgid "Your review is revealed only after both participants submit." msgstr "" "Ваш отзыв откроется только после того, как его отправят оба участника." -#: lib/who_need_help_web/live/request_live/index.ex:538 +#: lib/who_need_help_web/live/request_live/index.ex:602 #, elixir-autogen, elixir-format msgid "Your trust summary" msgstr "Ваши показатели доверия" @@ -2514,17 +2500,17 @@ msgstr "сообщение активности" msgid "before confirming." msgstr "перед подтверждением." -#: lib/who_need_help_web/live/activity_live/index.ex:269 +#: lib/who_need_help_web/live/activity_live/index.ex:464 #: lib/who_need_help_web/live/category_proposal_live.ex:188 #: lib/who_need_help_web/live/moderation_live.ex:372 -#: lib/who_need_help_web/live/request_live/index.ex:473 +#: lib/who_need_help_web/live/request_live/index.ex:536 #, elixir-autogen, elixir-format msgid "by %{name}" msgstr "автор: %{name}" #: lib/who_need_help_web/live/profile_live.ex:194 #: lib/who_need_help_web/live/public_profile_live.ex:133 -#: lib/who_need_help_web/live/request_live/index.ex:542 +#: lib/who_need_help_web/live/request_live/index.ex:606 #: lib/who_need_help_web/live/request_live/show.ex:1374 #, elixir-autogen, elixir-format msgid "completed" @@ -2560,7 +2546,7 @@ msgstr "организатор" msgid "participants only" msgstr "только участники" -#: lib/who_need_help_web/live/request_live/index.ex:546 +#: lib/who_need_help_web/live/request_live/index.ex:610 #: lib/who_need_help_web/live/request_live/show.ex:1378 #, elixir-autogen, elixir-format msgid "people" @@ -2620,7 +2606,7 @@ msgstr "срочно" #: lib/who_need_help_web/live/activity_live/show.ex:701 #: lib/who_need_help_web/live/profile_live.ex:289 #: lib/who_need_help_web/live/public_profile_live.ex:98 -#: lib/who_need_help_web/live/request_live/index.ex:550 +#: lib/who_need_help_web/live/request_live/index.ex:614 #: lib/who_need_help_web/live/request_live/show.ex:1093 #: lib/who_need_help_web/live/request_live/show.ex:1476 #, elixir-autogen, elixir-format @@ -2653,8 +2639,8 @@ msgstr "← Заявки" msgid "Approved" msgstr "Одобрено" -#: lib/who_need_help_web/live/request_live/index.ex:280 -#: lib/who_need_help_web/live/request_live/index.ex:281 +#: lib/who_need_help_web/live/request_live/index.ex:315 +#: lib/who_need_help_web/live/request_live/index.ex:316 #, elixir-autogen, elixir-format msgid "Expired" msgstr "Истекло" @@ -2707,8 +2693,8 @@ msgstr "Необычная частота действий" msgid "Load earlier messages" msgstr "Загрузить предыдущие сообщения" -#: lib/who_need_help_web/live/activity_live/index.ex:281 -#: lib/who_need_help_web/live/activity_live/index.ex:320 +#: lib/who_need_help_web/live/activity_live/index.ex:476 +#: lib/who_need_help_web/live/activity_live/index.ex:564 #: lib/who_need_help_web/live/category_proposal_live.ex:220 #: lib/who_need_help_web/live/leaderboard_live.ex:91 #: lib/who_need_help_web/live/moderation_live.ex:465 @@ -2720,16 +2706,15 @@ msgstr "Загрузить предыдущие сообщения" #: lib/who_need_help_web/live/profile_live.ex:367 #: lib/who_need_help_web/live/public_profile_live.ex:178 #: lib/who_need_help_web/live/report_live.ex:98 -#: lib/who_need_help_web/live/request_live/index.ex:577 +#: lib/who_need_help_web/live/request_live/index.ex:671 #: lib/who_need_help_web/live/support_operations_live.ex:306 #: lib/who_need_help_web/live/support_operations_live.ex:505 #, elixir-autogen, elixir-format msgid "Load more" msgstr "Загрузить ещё" -#: lib/who_need_help_web/live/activity_live/index.ex:292 #: lib/who_need_help_web/live/activity_live/show.ex:543 -#: lib/who_need_help_web/live/request_live/index.ex:519 +#: lib/who_need_help_web/live/request_live/index.ex:582 #: lib/who_need_help_web/live/request_live/show.ex:1275 #, elixir-autogen, elixir-format msgid "The map is unavailable in this browser. Request details remain usable." @@ -4123,7 +4108,7 @@ msgstr "" msgid "A volunteer accepted this request. Use private chat to coordinate safely." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:589 +#: lib/who_need_help_web/live/request_live/new.ex:636 #, elixir-autogen, elixir-format msgid "After a helper accepts" msgstr "После принятия заявки помощником" @@ -4133,12 +4118,12 @@ msgstr "После принятия заявки помощником" msgid "Already registered? Check your email" msgstr "Уже зарегистрированы?" -#: lib/who_need_help_web/live/request_live/new.ex:453 +#: lib/who_need_help_web/live/request_live/new.ex:500 #, elixir-autogen, elixir-format msgid "Area or public landmark" msgstr "Район или публичный ориентир" -#: lib/who_need_help_web/live/request_live/new.ex:553 +#: lib/who_need_help_web/live/request_live/new.ex:600 #, elixir-autogen, elixir-format msgid "Area radius" msgstr "Радиус зоны" @@ -4169,8 +4154,8 @@ msgstr "Проверьте почту" msgid "Choose a category from the same mode." msgstr "Выберите категорию" -#: lib/who_need_help_web/live/request_live/new.ex:434 -#: lib/who_need_help_web/live/request_live/new.ex:606 +#: lib/who_need_help_web/live/request_live/new.ex:475 +#: lib/who_need_help_web/live/request_live/new.ex:653 #, elixir-autogen, elixir-format msgid "Choose a place on the map or use your current location." msgstr "Выберите место на карте или используйте текущую геопозицию." @@ -4213,7 +4198,7 @@ msgid "Date" msgstr "" #: lib/who_need_help_web/live/notification_live.ex:656 -#: lib/who_need_help_web/live/request_live/new.ex:614 +#: lib/who_need_help_web/live/request_live/new.ex:661 #, elixir-autogen, elixir-format msgid "Enter coordinates manually" msgstr "Ввести координаты вручную" @@ -4223,17 +4208,17 @@ msgstr "Ввести координаты вручную" msgid "Enter the six digits shown to the requester." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:488 +#: lib/who_need_help_web/live/request_live/new.ex:535 #, elixir-autogen, elixir-format msgid "Exact point" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:680 +#: lib/who_need_help_web/live/request_live/new.ex:735 #, elixir-autogen, elixir-format msgid "Fix the following details and publish again:" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:616 +#: lib/who_need_help_web/live/request_live/new.ex:663 #, elixir-autogen, elixir-format msgid "For an approximate area, these coordinates are the area center—not your exact position." msgstr "Для примерной зоны эти координаты задают центр области, а не вашу точную позицию." @@ -4274,7 +4259,7 @@ msgstr "" msgid "Helper:" msgstr "Помощник" -#: lib/who_need_help_web/live/request_live/new.ex:534 +#: lib/who_need_help_web/live/request_live/new.ex:581 #, elixir-autogen, elixir-format msgid "Helpers will see only the area or landmark written above. You can share a live location later after matching." msgstr "Помощники увидят только указанный выше район или ориентир. После совпадения можно отдельно поделиться геопозицией." @@ -4289,29 +4274,29 @@ msgstr "" msgid "If this email belongs to an existing account, a secure sign-in link will arrive shortly." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:420 +#: lib/who_need_help_web/live/request_live/new.ex:460 #, elixir-autogen, elixir-format msgid "In 1 hour" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:421 +#: lib/who_need_help_web/live/request_live/new.ex:461 #, elixir-autogen, elixir-format msgid "In 3 hours" msgstr "" #: lib/who_need_help_web/live/notification_live.ex:574 -#: lib/who_need_help_web/live/request_live/new.ex:444 +#: lib/who_need_help_web/live/request_live/new.ex:485 #, elixir-autogen, elixir-format msgid "Location is unavailable in this browser." msgstr "Геопозиция недоступна в этом браузере." #: lib/who_need_help_web/live/notification_live.ex:576 -#: lib/who_need_help_web/live/request_live/new.ex:446 +#: lib/who_need_help_web/live/request_live/new.ex:487 #, elixir-autogen, elixir-format msgid "Location permission was denied." msgstr "Доступ к геопозиции отклонён." -#: lib/who_need_help_web/live/request_live/new.ex:574 +#: lib/who_need_help_web/live/request_live/new.ex:621 #, elixir-autogen, elixir-format msgid "Move the map area so it covers a useful public meeting place." msgstr "Переместите зону так, чтобы она охватывала удобное публичное место встречи." @@ -4321,17 +4306,17 @@ msgstr "Переместите зону так, чтобы она охватыв msgid "New notice" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:532 +#: lib/who_need_help_web/live/request_live/new.ex:579 #, elixir-autogen, elixir-format msgid "No coordinates will be stored" msgstr "Координаты не будут сохранены" -#: lib/who_need_help_web/live/request_live/new.ex:443 +#: lib/who_need_help_web/live/request_live/new.ex:484 #, elixir-autogen, elixir-format msgid "No map coordinates will be stored." msgstr "Координаты на карте не будут сохранены." -#: lib/who_need_help_web/live/request_live/new.ex:502 +#: lib/who_need_help_web/live/request_live/new.ex:549 #, elixir-autogen, elixir-format msgid "No map location" msgstr "Не показывать место на карте" @@ -4346,7 +4331,7 @@ msgstr "Ссылки на соцсети не добавлены." msgid "Only notices submitted while signed in appear here. Notices submitted without an account remain accessible through their private email link." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:503 +#: lib/who_need_help_web/live/request_live/new.ex:550 #, elixir-autogen, elixir-format msgid "Only the public area description" msgstr "Только публичное описание района" @@ -4388,7 +4373,7 @@ msgstr "" msgid "Read" msgstr "Прочитайте" -#: lib/who_need_help_web/live/request_live/new.ex:475 +#: lib/who_need_help_web/live/request_live/new.ex:522 #, elixir-autogen, elixir-format msgid "Recommended for privacy" msgstr "Рекомендуется для приватности" @@ -4403,7 +4388,7 @@ msgstr "Регистрация" msgid "Registration request accepted" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:417 +#: lib/who_need_help_web/live/request_live/new.ex:457 #, elixir-autogen, elixir-format, fuzzy msgid "Request expires" msgstr "Срок действия заявки (UTC)" @@ -4413,7 +4398,7 @@ msgstr "Срок действия заявки (UTC)" msgid "Request to join again" msgstr "Подать заявку на участие" -#: lib/who_need_help_web/live/request_live/new.ex:679 +#: lib/who_need_help_web/live/request_live/new.ex:734 #, elixir-autogen, elixir-format msgid "Request was not published" msgstr "" @@ -4466,7 +4451,7 @@ msgstr "Начало" msgid "Status updates go to the email address of your signed-in account." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:515 +#: lib/who_need_help_web/live/request_live/new.ex:562 #, elixir-autogen, elixir-format msgid "The map is unavailable. You can use the manual coordinate fallback." msgstr "Карта недоступна. Можно использовать резервный ручной ввод координат." @@ -4481,7 +4466,7 @@ msgstr "" msgid "This activity is closed. The group chat remains available as read-only history." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:457 +#: lib/who_need_help_web/live/request_live/new.ex:504 #, elixir-autogen, elixir-format msgid "This description is visible to everyone. Do not enter a private address." msgstr "Это описание видно всем. Не указывайте частный адрес." @@ -4511,7 +4496,7 @@ msgstr "" msgid "This person has not added a public bio yet." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:581 +#: lib/who_need_help_web/live/request_live/new.ex:628 #, elixir-autogen, elixir-format msgid "This point is public" msgstr "Эта точка видна всем" @@ -4542,12 +4527,12 @@ msgstr "Срок действия этой заявки истёк." msgid "Time" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:422 +#: lib/who_need_help_web/live/request_live/new.ex:462 #, elixir-autogen, elixir-format msgid "Tomorrow" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:582 +#: lib/who_need_help_web/live/request_live/new.ex:629 #, elixir-autogen, elixir-format msgid "Use a safe public meeting point instead of a private address." msgstr "Укажите безопасное публичное место встречи вместо частного адреса." @@ -4558,7 +4543,7 @@ msgid "Use another email" msgstr "" #: lib/who_need_help_web/live/notification_live.ex:609 -#: lib/who_need_help_web/live/request_live/new.ex:549 +#: lib/who_need_help_web/live/request_live/new.ex:596 #, elixir-autogen, elixir-format, fuzzy msgid "Use my location" msgstr "Использовать мою геопозицию" @@ -4596,7 +4581,7 @@ msgstr "" msgid "View my requests" msgstr "Новое обращение" -#: lib/who_need_help_web/live/request_live/new.ex:489 +#: lib/who_need_help_web/live/request_live/new.ex:536 #, elixir-autogen, elixir-format msgid "Visible before matching" msgstr "Видно до принятия заявки" @@ -4611,12 +4596,12 @@ msgstr "" msgid "Voted" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:462 +#: lib/who_need_help_web/live/request_live/new.ex:509 #, elixir-autogen, elixir-format msgid "What should people see?" msgstr "Что должны видеть другие?" -#: lib/who_need_help_web/live/request_live/new.ex:450 +#: lib/who_need_help_web/live/request_live/new.ex:493 #, elixir-autogen, elixir-format msgid "Where is help needed?" msgstr "Где нужна помощь?" @@ -4631,7 +4616,7 @@ msgstr "" msgid "You are not a participant. You can send a new request while registration is open." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:591 +#: lib/who_need_help_web/live/request_live/new.ex:638 #, elixir-autogen, elixir-format msgid "You can separately share live location with the matched person and stop sharing at any time." msgstr "Можно отдельно поделиться геопозицией с подобранным человеком и остановить передачу в любой момент." @@ -4651,7 +4636,7 @@ msgstr "" msgid "Your completion confirmation is saved." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:573 +#: lib/who_need_help_web/live/request_live/new.ex:620 #, elixir-autogen, elixir-format msgid "Your exact position is not shown" msgstr "Ваша точная позиция не показывается" @@ -4676,37 +4661,37 @@ msgstr "" msgid "← Community helpers" msgstr "Помощники сообщества" -#: lib/who_need_help_web/live/request_live/new.ex:436 +#: lib/who_need_help_web/live/request_live/new.ex:477 #, elixir-autogen, elixir-format msgid "Area selected. Drag the green pin or click the map to move it." msgstr "Область выбрана. Перетащите зелёный маркер или нажмите на карту, чтобы переместить её." -#: lib/who_need_help_web/live/request_live/new.ex:523 +#: lib/who_need_help_web/live/request_live/new.ex:570 #, elixir-autogen, elixir-format msgid "Click the map or drag the green pin to move the area" msgstr "Нажмите на карту или перетащите зелёный маркер, чтобы переместить область" -#: lib/who_need_help_web/live/request_live/new.ex:526 +#: lib/who_need_help_web/live/request_live/new.ex:573 #, elixir-autogen, elixir-format msgid "Click the map or drag the red pin to move the point" msgstr "Нажмите на карту или перетащите красный маркер, чтобы переместить точку" -#: lib/who_need_help_web/live/request_live/new.ex:441 +#: lib/who_need_help_web/live/request_live/new.ex:482 #, elixir-autogen, elixir-format msgid "Drag to move the approximate area" msgstr "Перетащите, чтобы переместить приблизительную область" -#: lib/who_need_help_web/live/request_live/new.ex:442 +#: lib/who_need_help_web/live/request_live/new.ex:483 #, elixir-autogen, elixir-format msgid "Drag to move the exact point" msgstr "Перетащите, чтобы переместить точную точку" -#: lib/who_need_help_web/live/request_live/new.ex:439 +#: lib/who_need_help_web/live/request_live/new.ex:480 #, elixir-autogen, elixir-format msgid "Exact point selected. Drag the red pin or click the map to move it." msgstr "Точная точка выбрана. Перетащите красный маркер или нажмите на карту, чтобы переместить её." -#: lib/who_need_help_web/live/request_live/index.ex:371 +#: lib/who_need_help_web/live/request_live/index.ex:434 #, elixir-autogen, elixir-format msgid "%{count} request in this map area" msgid_plural "%{count} requests in this map area" @@ -4714,32 +4699,34 @@ msgstr[0] "%{count} заявка в этой области карты" msgstr[1] "%{count} заявки в этой области карты" msgstr[2] "%{count} заявок в этой области карты" -#: lib/who_need_help_web/live/request_live/index.ex:354 +#: lib/who_need_help_web/live/activity_live/index.ex:396 +#: lib/who_need_help_web/live/request_live/index.ex:416 #, elixir-autogen, elixir-format msgid "Area or city" msgstr "Район или город" -#: lib/who_need_help_web/live/request_live/index.ex:424 +#: lib/who_need_help_web/live/activity_live/index.ex:412 +#: lib/who_need_help_web/live/request_live/index.ex:487 #, elixir-autogen, elixir-format msgid "Choose an area on the map" msgstr "Выберите область на карте" -#: lib/who_need_help_web/live/request_live/index.ex:301 +#: lib/who_need_help_web/live/request_live/index.ex:336 #, elixir-autogen, elixir-format msgid "Explore privacy-friendly areas and public exact meeting points chosen by requesters." msgstr "Просматривайте безопасные для приватности области и точные публичные места встречи, выбранные авторами заявок." -#: lib/who_need_help_web/live/request_live/index.ex:392 +#: lib/who_need_help_web/live/request_live/index.ex:455 #, elixir-autogen, elixir-format msgid "List" msgstr "Список" -#: lib/who_need_help_web/live/request_live/index.ex:495 +#: lib/who_need_help_web/live/request_live/index.ex:558 #, elixir-autogen, elixir-format msgid "Load more in this area" msgstr "Загрузить ещё в этой области" -#: lib/who_need_help_web/live/request_live/index.ex:412 +#: lib/who_need_help_web/live/request_live/index.ex:475 #, elixir-autogen, elixir-format msgid "Map" msgstr "Карта" @@ -4749,47 +4736,50 @@ msgstr "Карта" msgid "Map preview" msgstr "Предпросмотр карты" -#: lib/who_need_help_web/live/request_live/index.ex:436 +#: lib/who_need_help_web/live/activity_live/index.ex:424 +#: lib/who_need_help_web/live/request_live/index.ex:499 #, elixir-autogen, elixir-format msgid "Move or zoom the map to search somewhere else." msgstr "Переместите или масштабируйте карту, чтобы искать в другом месте." -#: lib/who_need_help_web/live/request_live/index.ex:379 +#: lib/who_need_help_web/live/request_live/index.ex:442 #, elixir-autogen, elixir-format msgid "Move the map, then search the newly visible area." msgstr "Переместите карту, затем выполните поиск в новой видимой области." -#: lib/who_need_help_web/live/request_live/index.ex:434 +#: lib/who_need_help_web/live/request_live/index.ex:497 #, elixir-autogen, elixir-format msgid "No open requests in this area" msgstr "В этой области нет открытых заявок" -#: lib/who_need_help_web/live/request_live/index.ex:426 +#: lib/who_need_help_web/live/request_live/index.ex:489 #, elixir-autogen, elixir-format msgid "Only requests from the selected map area will be loaded." msgstr "Будут загружены только заявки из выбранной области карты." -#: lib/who_need_help_web/live/request_live/index.ex:522 +#: lib/who_need_help_web/live/request_live/index.ex:585 #, elixir-autogen, elixir-format msgid "Open request" msgstr "Открыть заявку" -#: lib/who_need_help_web/live/request_live/index.ex:355 +#: lib/who_need_help_web/live/activity_live/index.ex:397 +#: lib/who_need_help_web/live/request_live/index.ex:417 #, elixir-autogen, elixir-format msgid "Optional text search" msgstr "Необязательный текстовый поиск" -#: lib/who_need_help_web/live/request_live/index.ex:501 +#: lib/who_need_help_web/live/request_live/index.ex:564 #, elixir-autogen, elixir-format msgid "Requests without map coordinates appear only when their public area description matches the text search." msgstr "Заявки без координат на карте отображаются только тогда, когда описание публичной области совпадает с текстовым поиском." -#: lib/who_need_help_web/live/request_live/index.ex:383 +#: lib/who_need_help_web/live/request_live/index.ex:446 #, elixir-autogen, elixir-format msgid "Results layout" msgstr "Расположение результатов" -#: lib/who_need_help_web/live/request_live/index.ex:533 +#: lib/who_need_help_web/live/activity_live/index.ex:508 +#: lib/who_need_help_web/live/request_live/index.ex:597 #, elixir-autogen, elixir-format msgid "Search this area" msgstr "Искать в этой области" @@ -4799,19 +4789,19 @@ msgstr "Искать в этой области" msgid "Static preview" msgstr "Статический просмотр" -#: lib/who_need_help_web/live/request_live/index.ex:402 +#: lib/who_need_help_web/live/request_live/index.ex:465 #, elixir-autogen, elixir-format msgid "Together" msgstr "Вместе" #: lib/who_need_help_web/controllers/page_html/home.html.heex:160 -#: lib/who_need_help_web/live/activity_live/index.ex:294 +#: lib/who_need_help_web/live/activity_live/index.ex:496 #: lib/who_need_help_web/live/activity_live/show.ex:545 #: lib/who_need_help_web/live/notification_live.ex:575 #: lib/who_need_help_web/live/notification_live.ex:594 -#: lib/who_need_help_web/live/request_live/index.ex:521 -#: lib/who_need_help_web/live/request_live/new.ex:445 -#: lib/who_need_help_web/live/request_live/new.ex:517 +#: lib/who_need_help_web/live/request_live/index.ex:584 +#: lib/who_need_help_web/live/request_live/new.ex:486 +#: lib/who_need_help_web/live/request_live/new.ex:564 #: lib/who_need_help_web/live/request_live/show.ex:1277 #, elixir-autogen, elixir-format msgid "Try map again" @@ -5198,6 +5188,7 @@ msgid "Nearby alert deleted." msgstr "" #: lib/who_need_help_web/live/notification_live.ex:429 +#: lib/who_need_help_web/live/request_live/index.ex:362 #, elixir-autogen, elixir-format msgid "Nearby requests" msgstr "" @@ -5535,7 +5526,7 @@ msgstr "Выбранный пример:" msgid "WebGL is unavailable in this browser, so the full map cannot start. Select an example below or retry the map." msgstr "WebGL недоступен в этом браузере, поэтому полная карта не может запуститься. Выберите пример ниже или попробуйте запустить карту ещё раз." -#: lib/who_need_help_web/live/activity_live/index.ex:295 +#: lib/who_need_help_web/live/activity_live/index.ex:497 #: lib/who_need_help_web/live/activity_live/show.ex:546 #: lib/who_need_help_web/live/request_live/show.ex:1278 #, elixir-autogen, elixir-format @@ -5629,7 +5620,7 @@ msgstr "Заявка на помощь" msgid "I confirm this is not an emergency or request for medical advice, the medicine and arrangement are lawful, and a volunteer chooses whether to spend money." msgstr "Я подтверждаю, что это не экстренная ситуация и не запрос медицинского совета, лекарство и договорённость законны, а волонтёр сам решает, тратить ли деньги." -#: lib/who_need_help_web/live/request_live/new.ex:376 +#: lib/who_need_help_web/live/request_live/new.ex:405 #, elixir-autogen, elixir-format msgid "If purchase is needed, accepting the request does not require the volunteer to spend money. Agree on the medicine, pharmacy requirements, payment, and any reimbursement only in the private matched chat." msgstr "Если лекарство нужно купить, принятие заявки не обязывает волонтёра тратить деньги. Согласуйте лекарство, требования аптеки, оплату и возможное возмещение только в приватном чате после совпадения." @@ -6100,7 +6091,7 @@ msgstr "Теперь ваш отзыв виден" msgid "Delivery settings" msgstr "Настройки доставки" -#: lib/who_need_help_web/live/request_live/index.ex:478 +#: lib/who_need_help_web/live/request_live/index.ex:541 #, elixir-autogen, elixir-format msgid "Expires" msgstr "Истекает" @@ -6119,3 +6110,157 @@ msgstr "Оповещения рядом" #, elixir-autogen, elixir-format msgid "Notification sections" msgstr "Разделы уведомлений" + +#: lib/who_need_help_web/live/activity_live/index.ex:492 +#, elixir-autogen, elixir-format +msgid "%{count} activities" +msgstr "Активностей: %{count}" + +#: lib/who_need_help_web/live/activity_live/index.ex:512 +#, elixir-autogen, elixir-format +msgid "%{count} activity in this map area" +msgid_plural "%{count} activities in this map area" +msgstr[0] "%{count} активность в этой области карты" +msgstr[1] "%{count} активности в этой области карты" +msgstr[2] "%{count} активностей в этой области карты" + +#: lib/who_need_help_web/live/request_live/index.ex:586 +#, elixir-autogen, elixir-format +msgid "%{count} requests" +msgstr "Заявок: %{count}" + +#: lib/who_need_help_web/live/activity_live/index.ex:530 +#, elixir-autogen, elixir-format +msgid "Activities you create or ask to join will appear here. Leaving removes an activity from this list." +msgstr "Созданные вами активности и те, к которым вы попросили присоединиться, появятся здесь. После выхода активность исчезнет из списка." + +#: lib/who_need_help_web/live/activity_live/index.ex:351 +#, elixir-autogen, elixir-format +msgid "Activity views" +msgstr "Разделы активностей" + +#: lib/who_need_help_web/live/request_live/new.ex:295 +#, elixir-autogen, elixir-format +msgid "Choose a category and describe the task clearly." +msgstr "Выберите категорию и понятно опишите задачу." + +#: lib/who_need_help_web/live/request_live/new.ex:713 +#, elixir-autogen, elixir-format +msgid "Confirm the safety guidance before asking nearby people for help." +msgstr "Подтвердите правила безопасности перед публикацией заявки." + +#: lib/who_need_help_web/live/request_live/index.ex:631 +#, elixir-autogen, elixir-format +msgid "Create request" +msgstr "Создать заявку" + +#: lib/who_need_help_web/live/request_live/index.ex:645 +#, elixir-autogen, elixir-format +msgid "Create your first request" +msgstr "Создать первую заявку" + +#: lib/who_need_help_web/live/request_live/new.ex:277 +#, elixir-autogen, elixir-format +msgid "Help details" +msgstr "Что нужно сделать" + +#: lib/who_need_help_web/live/request_live/new.ex:279 +#, elixir-autogen, elixir-format +msgid "Location" +msgstr "Место" + +#: lib/who_need_help_web/live/activity_live/index.ex:357 +#, elixir-autogen, elixir-format +msgid "My activities" +msgstr "Мои активности" + +#: lib/who_need_help_web/live/request_live/index.ex:363 +#: lib/who_need_help_web/live/request_live/index.ex:625 +#, elixir-autogen, elixir-format +msgid "My requests" +msgstr "Мои заявки" + +#: lib/who_need_help_web/live/activity_live/index.ex:356 +#, elixir-autogen, elixir-format +msgid "Nearby activities" +msgstr "Активности рядом" + +#: lib/who_need_help_web/live/activity_live/index.ex:528 +#, elixir-autogen, elixir-format +msgid "No activities yet" +msgstr "Активностей пока нет" + +#: lib/who_need_help_web/live/activity_live/index.ex:422 +#, elixir-autogen, elixir-format +msgid "No open activities in this area" +msgstr "В этой области нет открытых активностей" + +#: lib/who_need_help_web/live/request_live/index.ex:640 +#, elixir-autogen, elixir-format +msgid "No requests yet" +msgstr "Заявок пока нет" + +#: lib/who_need_help_web/live/activity_live/index.ex:414 +#, elixir-autogen, elixir-format +msgid "Only activities from the selected map area will be loaded." +msgstr "Будут загружены только активности из выбранной области карты." + +#: lib/who_need_help_web/live/activity_live/index.ex:491 +#, elixir-autogen, elixir-format +msgid "Open activity" +msgstr "Открыть активность" + +#: lib/who_need_help_web/live/request_live/new.ex:273 +#, elixir-autogen, elixir-format +msgid "Request form steps" +msgstr "Шаги создания заявки" + +#: lib/who_need_help_web/live/request_live/index.ex:357 +#, elixir-autogen, elixir-format +msgid "Request views" +msgstr "Разделы заявок" + +#: lib/who_need_help_web/live/request_live/index.ex:642 +#, elixir-autogen, elixir-format +msgid "Requests you publish or accept will appear here." +msgstr "Здесь появятся заявки, которые вы создали или приняли." + +#: lib/who_need_help_web/live/request_live/new.ex:280 +#, elixir-autogen, elixir-format +msgid "Review" +msgstr "Проверка" + +#: lib/who_need_help_web/live/request_live/new.ex:712 +#, elixir-autogen, elixir-format +msgid "Review and publish" +msgstr "Проверьте и опубликуйте" + +#: lib/who_need_help_web/live/request_live/new.ex:441 +#, elixir-autogen, elixir-format +msgid "Set urgency and when this request should close." +msgstr "Укажите срочность и время закрытия заявки." + +#: lib/who_need_help_web/live/request_live/new.ex:494 +#, elixir-autogen, elixir-format +msgid "Share only as much location detail as helpers need." +msgstr "Покажите помощникам только необходимую информацию о месте." + +#: lib/who_need_help_web/live/activity_live/index.ex:494 +#, elixir-autogen, elixir-format +msgid "The map is unavailable in this browser. Activity details remain usable." +msgstr "Карта недоступна в этом браузере. Информация об активностях по-прежнему доступна." + +#: lib/who_need_help_web/live/request_live/new.ex:278 +#, elixir-autogen, elixir-format +msgid "Timing" +msgstr "Время" + +#: lib/who_need_help_web/live/request_live/index.ex:627 +#, elixir-autogen, elixir-format +msgid "Track requests you created and requests you accepted as a helper." +msgstr "Следите за созданными заявками и за теми, которые вы приняли как помощник." + +#: lib/who_need_help_web/live/request_live/new.ex:440 +#, elixir-autogen, elixir-format +msgid "When is help needed?" +msgstr "Когда нужна помощь?" diff --git a/priv/gettext/uk/LC_MESSAGES/default.po b/priv/gettext/uk/LC_MESSAGES/default.po index 18105fa..5ee05d1 100644 --- a/priv/gettext/uk/LC_MESSAGES/default.po +++ b/priv/gettext/uk/LC_MESSAGES/default.po @@ -185,7 +185,7 @@ msgid "Active" msgstr "Активний" #: lib/who_need_help_web/components/layouts.ex:231 -#: lib/who_need_help_web/live/activity_live/index.ex:118 +#: lib/who_need_help_web/live/activity_live/index.ex:29 #, elixir-autogen, elixir-format msgid "Activities" msgstr "Активності" @@ -227,7 +227,7 @@ msgstr "Активність опубліковано. Ви схвалюєте msgid "Activity restored." msgstr "Активність відновлено." -#: lib/who_need_help_web/live/activity_live/index.ex:210 +#: lib/who_need_help_web/live/activity_live/index.ex:385 #: lib/who_need_help_web/live/activity_live/new.ex:174 #, elixir-autogen, elixir-format msgid "Activity type" @@ -244,12 +244,12 @@ msgstr "Додати непідтверджене посилання" msgid "Administrator" msgstr "Адміністратор" -#: lib/who_need_help_web/live/activity_live/index.ex:212 +#: lib/who_need_help_web/live/activity_live/index.ex:387 #, elixir-autogen, elixir-format msgid "All activities" msgstr "Усі активності" -#: lib/who_need_help_web/live/request_live/index.ex:331 +#: lib/who_need_help_web/live/request_live/index.ex:393 #, elixir-autogen, elixir-format msgid "All categories" msgstr "Усі категорії" @@ -264,7 +264,7 @@ msgstr "Уже зареєстровані?" msgid "Another helper already accepted this request." msgstr "Інший помічник уже прийняв цю заявку." -#: lib/who_need_help_web/live/request_live/index.ex:346 +#: lib/who_need_help_web/live/request_live/index.ex:408 #, elixir-autogen, elixir-format msgid "Any urgency" msgstr "Будь-яка терміновість" @@ -291,7 +291,7 @@ msgstr "Схвалені учасники" #: lib/who_need_help_web/controllers/page_html/home.html.heex:80 #: lib/who_need_help_web/live/activity_live/new.ex:303 -#: lib/who_need_help_web/live/request_live/new.ex:474 +#: lib/who_need_help_web/live/request_live/new.ex:521 #, elixir-autogen, elixir-format msgid "Approximate area" msgstr "Орієнтовний район" @@ -389,17 +389,17 @@ msgstr "Скасувати активність" msgid "Cancel request" msgstr "Скасувати запит" -#: lib/who_need_help_web/live/activity_live/index.ex:168 +#: lib/who_need_help_web/live/activity_live/index.ex:316 #: lib/who_need_help_web/live/activity_live/show.ex:344 -#: lib/who_need_help_web/live/request_live/index.ex:278 -#: lib/who_need_help_web/live/request_live/index.ex:279 +#: lib/who_need_help_web/live/request_live/index.ex:313 +#: lib/who_need_help_web/live/request_live/index.ex:314 #: lib/who_need_help_web/live/request_live/show.ex:956 #, elixir-autogen, elixir-format msgid "Cancelled" msgstr "Скасовано" -#: lib/who_need_help_web/live/request_live/index.ex:329 -#: lib/who_need_help_web/live/request_live/new.ex:276 +#: lib/who_need_help_web/live/request_live/index.ex:391 +#: lib/who_need_help_web/live/request_live/new.ex:302 #, elixir-autogen, elixir-format msgid "Category" msgstr "Категорія" @@ -409,7 +409,7 @@ msgstr "Категорія" msgid "Category created and proposal approved." msgstr "Категорію створено, а пропозицію схвалено." -#: lib/who_need_help_web/live/request_live/new.ex:307 +#: lib/who_need_help_web/live/request_live/new.ex:333 #: lib/who_need_help_web/live/request_live/show.ex:1048 #, elixir-autogen, elixir-format msgid "Category details" @@ -448,15 +448,15 @@ msgstr "" msgid "Choose activity" msgstr "Оберіть активність" -#: lib/who_need_help_web/live/request_live/new.ex:277 +#: lib/who_need_help_web/live/request_live/new.ex:303 #, elixir-autogen, elixir-format msgid "Choose category" msgstr "Виберіть категорію" #: lib/who_need_help_web/live/activity_live/new.ex:210 #: lib/who_need_help_web/live/activity_live/new.ex:237 -#: lib/who_need_help_web/live/request_live/new.ex:319 -#: lib/who_need_help_web/live/request_live/new.ex:346 +#: lib/who_need_help_web/live/request_live/new.ex:345 +#: lib/who_need_help_web/live/request_live/new.ex:372 #, elixir-autogen, elixir-format msgid "Choose…" msgstr "Оберіть…" @@ -482,7 +482,7 @@ msgstr "Закрити" msgid "Coffee and conversation" msgstr "Кава й розмова" -#: lib/who_need_help_web/live/activity_live/index.ex:182 +#: lib/who_need_help_web/live/activity_live/index.ex:330 #, elixir-autogen, elixir-format msgid "Coffee, cinema, walks, and hikes are separate from urgent help and never affect helper ratings." msgstr "" @@ -499,19 +499,19 @@ msgstr "Коментар (необов’язково)" msgid "Community helpers" msgstr "Помічники спільноти" -#: lib/who_need_help_web/live/activity_live/index.ex:270 +#: lib/who_need_help_web/live/activity_live/index.ex:465 #: lib/who_need_help_web/live/activity_live/show.ex:403 #: lib/who_need_help_web/live/activity_live/show.ex:621 #: lib/who_need_help_web/live/activity_live/show.ex:680 -#: lib/who_need_help_web/live/request_live/index.ex:474 +#: lib/who_need_help_web/live/request_live/index.ex:537 #, elixir-autogen, elixir-format msgid "Community member" msgstr "Член спільноти" -#: lib/who_need_help_web/live/activity_live/index.ex:167 +#: lib/who_need_help_web/live/activity_live/index.ex:315 #: lib/who_need_help_web/live/activity_live/show.ex:343 -#: lib/who_need_help_web/live/request_live/index.ex:276 -#: lib/who_need_help_web/live/request_live/index.ex:277 +#: lib/who_need_help_web/live/request_live/index.ex:311 +#: lib/who_need_help_web/live/request_live/index.ex:312 #: lib/who_need_help_web/live/request_live/show.ex:955 #: lib/who_need_help_web/live/request_live/show.ex:974 #, elixir-autogen, elixir-format @@ -565,17 +565,13 @@ msgstr "Інструкції для підтвердження" msgid "Confirming..." msgstr "Підтвердження…" -#: lib/who_need_help_web/live/activity_live/index.ex:229 -#, elixir-autogen, elixir-format -msgid "Create a clear plan in a public place." -msgstr "Створіть зрозумілий план у громадському місці." - -#: lib/who_need_help_web/live/activity_live/index.ex:188 +#: lib/who_need_help_web/live/activity_live/index.ex:336 #: lib/who_need_help_web/live/activity_live/new.ex:12 #, elixir-autogen, elixir-format msgid "Create activity" msgstr "Створити активність" +#: lib/who_need_help_web/live/activity_live/index.ex:535 #: lib/who_need_help_web/live/activity_live/new.ex:150 #, elixir-autogen, elixir-format msgid "Create an activity" @@ -586,7 +582,7 @@ msgstr "Створити активність" msgid "Create category" msgstr "Створити категорію" -#: lib/who_need_help_web/live/request_live/index.ex:307 +#: lib/who_need_help_web/live/request_live/index.ex:342 #, elixir-autogen, elixir-format msgid "Create urgent request" msgstr "Створити термінову заявку" @@ -751,12 +747,12 @@ msgstr "Публічно — точно" msgid "Expires:" msgstr "Спливає:" -#: lib/who_need_help_web/live/request_live/new.ex:391 +#: lib/who_need_help_web/live/request_live/new.ex:420 #, elixir-autogen, elixir-format msgid "Explain what is already arranged and what the volunteer needs to do." msgstr "Поясніть, що вже організовано й що має зробити волонтер." -#: lib/who_need_help_web/live/activity_live/index.ex:179 +#: lib/who_need_help_web/live/activity_live/index.ex:327 #, elixir-autogen, elixir-format msgid "Find people to join" msgstr "Знайти компанію" @@ -957,8 +953,8 @@ msgstr "" "Android показує постійне сповіщення й може продовжувати передавання після " "згортання. Після зупинення передавання вихідні координати видаляються." -#: lib/who_need_help_web/live/request_live/index.ex:274 -#: lib/who_need_help_web/live/request_live/index.ex:275 +#: lib/who_need_help_web/live/request_live/index.ex:309 +#: lib/who_need_help_web/live/request_live/index.ex:310 #: lib/who_need_help_web/live/request_live/show.ex:954 #, elixir-autogen, elixir-format msgid "In progress" @@ -993,7 +989,7 @@ msgstr "Приймання заявок завершується" #: lib/who_need_help_web/live/activity_live/new.ex:327 #: lib/who_need_help_web/live/notification_live.ex:659 -#: lib/who_need_help_web/live/request_live/new.ex:622 +#: lib/who_need_help_web/live/request_live/new.ex:669 #, elixir-autogen, elixir-format msgid "Latitude" msgstr "Широта" @@ -1053,7 +1049,7 @@ msgstr "Ви успішно вийшли." #: lib/who_need_help_web/live/activity_live/new.ex:334 #: lib/who_need_help_web/live/notification_live.ex:673 -#: lib/who_need_help_web/live/request_live/new.ex:636 +#: lib/who_need_help_web/live/request_live/new.ex:683 #, elixir-autogen, elixir-format msgid "Longitude" msgstr "Довгота" @@ -1086,8 +1082,8 @@ msgstr "Позначити завершеною" msgid "Match and coordinate" msgstr "Знайдіть помічника й узгодьте деталі" -#: lib/who_need_help_web/live/request_live/index.ex:272 -#: lib/who_need_help_web/live/request_live/index.ex:273 +#: lib/who_need_help_web/live/request_live/index.ex:307 +#: lib/who_need_help_web/live/request_live/index.ex:308 #: lib/who_need_help_web/live/request_live/show.ex:952 #, elixir-autogen, elixir-format msgid "Matched" @@ -1116,7 +1112,7 @@ msgstr "" msgid "Medicine requests" msgstr "Запити на ліки" -#: lib/who_need_help_web/live/activity_live/index.ex:195 +#: lib/who_need_help_web/live/activity_live/index.ex:343 #, elixir-autogen, elixir-format msgid "Meet in public first, keep exact details inside the approved group, and leave or report anything that feels unsafe." msgstr "" @@ -1175,12 +1171,12 @@ msgstr "Модератор" msgid "Moderator access is required." msgstr "Потрібен доступ модератора." -#: lib/who_need_help_web/live/request_live/index.ex:298 +#: lib/who_need_help_web/live/request_live/index.ex:333 #, elixir-autogen, elixir-format msgid "NEARBY MUTUAL AID" msgstr "ВЗАЄМОДОПОМОГА ПОРУЧ" -#: lib/who_need_help_web/live/request_live/index.ex:31 +#: lib/who_need_help_web/live/request_live/index.ex:33 #, elixir-autogen, elixir-format msgid "Nearby help" msgstr "Допомога поруч" @@ -1202,7 +1198,7 @@ msgstr "Новий пароль" #: lib/who_need_help_web/live/activity_live/new.ex:242 #: lib/who_need_help_web/live/activity_live/show.ex:300 -#: lib/who_need_help_web/live/request_live/new.ex:351 +#: lib/who_need_help_web/live/request_live/new.ex:380 #: lib/who_need_help_web/live/request_live/show.ex:877 #, elixir-autogen, elixir-format msgid "No" @@ -1219,11 +1215,6 @@ msgstr "Завершеної допомоги поки немає." msgid "No messages yet." msgstr "Ще немає повідомлень." -#: lib/who_need_help_web/live/activity_live/index.ex:227 -#, elixir-autogen, elixir-format -msgid "No open activities yet" -msgstr "Відкритих активностей поки немає" - #: lib/who_need_help_web/live/moderation_live.ex:537 #, elixir-autogen, elixir-format msgid "No open signals." @@ -1268,17 +1259,17 @@ msgid "Not for emergencies" msgstr "Не для екстрених ситуацій" #: lib/who_need_help_web/live/notification_live.ex:721 -#: lib/who_need_help_web/live/request_live/index.ex:262 -#: lib/who_need_help_web/live/request_live/index.ex:263 -#: lib/who_need_help_web/live/request_live/index.ex:347 -#: lib/who_need_help_web/live/request_live/new.ex:410 +#: lib/who_need_help_web/live/request_live/index.ex:297 +#: lib/who_need_help_web/live/request_live/index.ex:298 +#: lib/who_need_help_web/live/request_live/index.ex:409 +#: lib/who_need_help_web/live/request_live/new.ex:450 #: lib/who_need_help_web/live/request_live/show.ex:943 #: lib/who_need_help_web/live/request_live/show.ex:944 #, elixir-autogen, elixir-format msgid "Now" msgstr "Зараз" -#: lib/who_need_help_web/live/activity_live/index.ex:177 +#: lib/who_need_help_web/live/activity_live/index.ex:325 #, elixir-autogen, elixir-format msgid "OPTIONAL SOCIAL PLANS" msgstr "НЕОБОВ’ЯЗКОВІ СПІЛЬНІ ПЛАНИ" @@ -1298,12 +1289,12 @@ msgstr "" #: lib/who_need_help/notifications/text.ex:141 #: lib/who_need_help_web/controllers/content_removal_html.ex:21 #: lib/who_need_help_web/controllers/support_html.ex:16 -#: lib/who_need_help_web/live/activity_live/index.ex:166 +#: lib/who_need_help_web/live/activity_live/index.ex:314 #: lib/who_need_help_web/live/activity_live/show.ex:342 #: lib/who_need_help_web/live/moderation_live.ex:258 #: lib/who_need_help_web/live/report_live.ex:104 -#: lib/who_need_help_web/live/request_live/index.ex:270 -#: lib/who_need_help_web/live/request_live/index.ex:271 +#: lib/who_need_help_web/live/request_live/index.ex:305 +#: lib/who_need_help_web/live/request_live/index.ex:306 #: lib/who_need_help_web/live/request_live/show.ex:951 #: lib/who_need_help_web/live/support_operations_live.ex:237 #: lib/who_need_help_web/live/support_operations_live.ex:438 @@ -1390,7 +1381,7 @@ msgstr "Пароль" msgid "Password updated successfully." msgstr "Пароль успішно оновлено." -#: lib/who_need_help_web/live/request_live/new.ex:397 +#: lib/who_need_help_web/live/request_live/new.ex:426 #, elixir-autogen, elixir-format msgid "Pickup instructions (optional)" msgstr "Інструкції для отримання (необов’язково)" @@ -1426,7 +1417,7 @@ msgstr "Будь ласка, перевірте вказані поля." msgid "Please check the submitted message." msgstr "Будь ласка, перевірте надіслане повідомлення." -#: lib/who_need_help_web/live/request_live/new.ex:454 +#: lib/who_need_help_web/live/request_live/new.ex:501 #, elixir-autogen, elixir-format msgid "Podil, near the central pharmacy" msgstr "Поділь, поблизу центральної аптеки." @@ -1538,13 +1529,13 @@ msgstr "Опублікувати активність" msgid "Publish proposal" msgstr "Оприлюднити пропозицію" -#: lib/who_need_help_web/live/request_live/new.ex:690 +#: lib/who_need_help_web/live/request_live/new.ex:745 #, elixir-autogen, elixir-format msgid "Publish request" msgstr "Опублікувати заявку" #: lib/who_need_help_web/live/activity_live/new.ex:353 -#: lib/who_need_help_web/live/request_live/new.ex:688 +#: lib/who_need_help_web/live/request_live/new.ex:743 #, elixir-autogen, elixir-format msgid "Publishing…" msgstr "Публікація…" @@ -1791,10 +1782,10 @@ msgid "Save profile" msgstr "Зберегти профіль" #: lib/who_need_help_web/live/notification_live.ex:723 -#: lib/who_need_help_web/live/request_live/index.ex:266 -#: lib/who_need_help_web/live/request_live/index.ex:267 -#: lib/who_need_help_web/live/request_live/index.ex:349 -#: lib/who_need_help_web/live/request_live/new.ex:412 +#: lib/who_need_help_web/live/request_live/index.ex:301 +#: lib/who_need_help_web/live/request_live/index.ex:302 +#: lib/who_need_help_web/live/request_live/index.ex:411 +#: lib/who_need_help_web/live/request_live/new.ex:452 #: lib/who_need_help_web/live/request_live/show.ex:947 #: lib/who_need_help_web/live/request_live/show.ex:948 #, elixir-autogen, elixir-format @@ -1825,7 +1816,7 @@ msgstr "" msgid "Share location" msgstr "Поділитися геопозицією" -#: lib/who_need_help_web/live/request_live/new.ex:399 +#: lib/who_need_help_web/live/request_live/new.ex:428 #, elixir-autogen, elixir-format msgid "Share only non-sensitive instructions. Exact details can wait for the matched chat." msgstr "" @@ -1838,7 +1829,7 @@ msgid "Short bio" msgstr "Коротко про себе" #: lib/who_need_help_web/live/activity_live/new.ex:266 -#: lib/who_need_help_web/live/request_live/new.ex:383 +#: lib/who_need_help_web/live/request_live/new.ex:412 #, elixir-autogen, elixir-format msgid "Short title" msgstr "Короткий заголовок" @@ -2065,7 +2056,7 @@ msgstr "Цей стан активності вже змінено." msgid "This interaction is blocked." msgstr "Ця взаємодія заблокована." -#: lib/who_need_help_web/live/request_live/index.ex:314 +#: lib/who_need_help_web/live/request_live/index.ex:349 #: lib/who_need_help_web/live/request_live/show.ex:1022 #, elixir-autogen, elixir-format msgid "This is not an emergency service. Contact local emergency services for immediate danger." @@ -2118,10 +2109,10 @@ msgid "To see sent emails, visit" msgstr "Щоб переглянути надіслані листи, відкрийте" #: lib/who_need_help_web/live/notification_live.ex:722 -#: lib/who_need_help_web/live/request_live/index.ex:264 -#: lib/who_need_help_web/live/request_live/index.ex:265 -#: lib/who_need_help_web/live/request_live/index.ex:348 -#: lib/who_need_help_web/live/request_live/new.ex:411 +#: lib/who_need_help_web/live/request_live/index.ex:299 +#: lib/who_need_help_web/live/request_live/index.ex:300 +#: lib/who_need_help_web/live/request_live/index.ex:410 +#: lib/who_need_help_web/live/request_live/new.ex:451 #: lib/who_need_help_web/live/request_live/show.ex:945 #: lib/who_need_help_web/live/request_live/show.ex:946 #, elixir-autogen, elixir-format @@ -2200,8 +2191,8 @@ msgid "Update email instructions" msgstr "Інструкції для зміни електронної пошти" #: lib/who_need_help_web/live/notification_live.ex:716 -#: lib/who_need_help_web/live/request_live/index.ex:344 -#: lib/who_need_help_web/live/request_live/new.ex:408 +#: lib/who_need_help_web/live/request_live/index.ex:406 +#: lib/who_need_help_web/live/request_live/new.ex:448 #, elixir-autogen, elixir-format msgid "Urgency" msgstr "Терміновість" @@ -2333,7 +2324,8 @@ msgstr "Що сталося?" msgid "What help category is missing?" msgstr "Яка категорія допомоги відсутня?" -#: lib/who_need_help_web/live/request_live/new.ex:389 +#: lib/who_need_help_web/live/request_live/new.ex:294 +#: lib/who_need_help_web/live/request_live/new.ex:418 #, elixir-autogen, elixir-format msgid "What help do you need?" msgstr "Яка допомога вам потрібна?" @@ -2359,7 +2351,7 @@ msgstr "" "через підписку ChatGPT розробника. Ключ OpenAI API та резервний варіант API " "з оплатою за використання не застосовуються." -#: lib/who_need_help_web/live/request_live/index.ex:299 +#: lib/who_need_help_web/live/request_live/index.ex:334 #, elixir-autogen, elixir-format msgid "Who needs help?" msgstr "Хто потребує допомоги?" @@ -2381,7 +2373,7 @@ msgstr "Напишіть безпечне повідомлення для коо #: lib/who_need_help_web/live/activity_live/new.ex:239 #: lib/who_need_help_web/live/activity_live/show.ex:298 -#: lib/who_need_help_web/live/request_live/new.ex:348 +#: lib/who_need_help_web/live/request_live/new.ex:374 #: lib/who_need_help_web/live/request_live/show.ex:875 #: lib/who_need_help_web/live/request_live/show.ex:1431 #: lib/who_need_help_web/live/request_live/show.ex:1439 @@ -2455,11 +2447,6 @@ msgstr "" "Щоб виконувати чутливі дії з обліковим записом, потрібно повторно " "автентифікуватися." -#: lib/who_need_help_web/live/activity_live/index.ex:302 -#, elixir-autogen, elixir-format -msgid "Your activities" -msgstr "Ваші активності" - #: lib/who_need_help_web/live/request_live/show.ex:184 #, elixir-autogen, elixir-format msgid "Your confirmation was saved." @@ -2476,7 +2463,6 @@ msgid "Your request is now visible to nearby helpers." msgstr "Тепер вашу заявку бачать помічники поруч." #: lib/who_need_help_web/controllers/support_html/index.html.heex:6 -#: lib/who_need_help_web/live/request_live/index.ex:559 #, elixir-autogen, elixir-format msgid "Your requests" msgstr "Ваші запити" @@ -2487,7 +2473,7 @@ msgid "Your review is revealed only after both participants submit." msgstr "" "Ваш відгук відкриється лише після того, як його надішлють обидва учасники." -#: lib/who_need_help_web/live/request_live/index.ex:538 +#: lib/who_need_help_web/live/request_live/index.ex:602 #, elixir-autogen, elixir-format msgid "Your trust summary" msgstr "Ваші показники довіри" @@ -2508,17 +2494,17 @@ msgstr "повідомлення активності" msgid "before confirming." msgstr "перед підтвердженням." -#: lib/who_need_help_web/live/activity_live/index.ex:269 +#: lib/who_need_help_web/live/activity_live/index.ex:464 #: lib/who_need_help_web/live/category_proposal_live.ex:188 #: lib/who_need_help_web/live/moderation_live.ex:372 -#: lib/who_need_help_web/live/request_live/index.ex:473 +#: lib/who_need_help_web/live/request_live/index.ex:536 #, elixir-autogen, elixir-format msgid "by %{name}" msgstr "автор: %{name}" #: lib/who_need_help_web/live/profile_live.ex:194 #: lib/who_need_help_web/live/public_profile_live.ex:133 -#: lib/who_need_help_web/live/request_live/index.ex:542 +#: lib/who_need_help_web/live/request_live/index.ex:606 #: lib/who_need_help_web/live/request_live/show.ex:1374 #, elixir-autogen, elixir-format msgid "completed" @@ -2554,7 +2540,7 @@ msgstr "організатор" msgid "participants only" msgstr "лише учасники" -#: lib/who_need_help_web/live/request_live/index.ex:546 +#: lib/who_need_help_web/live/request_live/index.ex:610 #: lib/who_need_help_web/live/request_live/show.ex:1378 #, elixir-autogen, elixir-format msgid "people" @@ -2614,7 +2600,7 @@ msgstr "терміново" #: lib/who_need_help_web/live/activity_live/show.ex:701 #: lib/who_need_help_web/live/profile_live.ex:289 #: lib/who_need_help_web/live/public_profile_live.ex:98 -#: lib/who_need_help_web/live/request_live/index.ex:550 +#: lib/who_need_help_web/live/request_live/index.ex:614 #: lib/who_need_help_web/live/request_live/show.ex:1093 #: lib/who_need_help_web/live/request_live/show.ex:1476 #, elixir-autogen, elixir-format @@ -2647,8 +2633,8 @@ msgstr "← Заявки" msgid "Approved" msgstr "Схвалено" -#: lib/who_need_help_web/live/request_live/index.ex:280 -#: lib/who_need_help_web/live/request_live/index.ex:281 +#: lib/who_need_help_web/live/request_live/index.ex:315 +#: lib/who_need_help_web/live/request_live/index.ex:316 #, elixir-autogen, elixir-format msgid "Expired" msgstr "Спливло" @@ -2701,8 +2687,8 @@ msgstr "Незвична частота дій" msgid "Load earlier messages" msgstr "Завантажити попередні повідомлення" -#: lib/who_need_help_web/live/activity_live/index.ex:281 -#: lib/who_need_help_web/live/activity_live/index.ex:320 +#: lib/who_need_help_web/live/activity_live/index.ex:476 +#: lib/who_need_help_web/live/activity_live/index.ex:564 #: lib/who_need_help_web/live/category_proposal_live.ex:220 #: lib/who_need_help_web/live/leaderboard_live.ex:91 #: lib/who_need_help_web/live/moderation_live.ex:465 @@ -2714,16 +2700,15 @@ msgstr "Завантажити попередні повідомлення" #: lib/who_need_help_web/live/profile_live.ex:367 #: lib/who_need_help_web/live/public_profile_live.ex:178 #: lib/who_need_help_web/live/report_live.ex:98 -#: lib/who_need_help_web/live/request_live/index.ex:577 +#: lib/who_need_help_web/live/request_live/index.ex:671 #: lib/who_need_help_web/live/support_operations_live.ex:306 #: lib/who_need_help_web/live/support_operations_live.ex:505 #, elixir-autogen, elixir-format msgid "Load more" msgstr "Завантажити ще" -#: lib/who_need_help_web/live/activity_live/index.ex:292 #: lib/who_need_help_web/live/activity_live/show.ex:543 -#: lib/who_need_help_web/live/request_live/index.ex:519 +#: lib/who_need_help_web/live/request_live/index.ex:582 #: lib/who_need_help_web/live/request_live/show.ex:1275 #, elixir-autogen, elixir-format msgid "The map is unavailable in this browser. Request details remain usable." @@ -4117,7 +4102,7 @@ msgstr "" msgid "A volunteer accepted this request. Use private chat to coordinate safely." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:589 +#: lib/who_need_help_web/live/request_live/new.ex:636 #, elixir-autogen, elixir-format msgid "After a helper accepts" msgstr "Після прийняття заявки помічником" @@ -4127,12 +4112,12 @@ msgstr "Після прийняття заявки помічником" msgid "Already registered? Check your email" msgstr "Уже зареєстровані?" -#: lib/who_need_help_web/live/request_live/new.ex:453 +#: lib/who_need_help_web/live/request_live/new.ex:500 #, elixir-autogen, elixir-format msgid "Area or public landmark" msgstr "Район або публічний орієнтир" -#: lib/who_need_help_web/live/request_live/new.ex:553 +#: lib/who_need_help_web/live/request_live/new.ex:600 #, elixir-autogen, elixir-format msgid "Area radius" msgstr "Радіус зони" @@ -4163,8 +4148,8 @@ msgstr "Перевірте пошту" msgid "Choose a category from the same mode." msgstr "Виберіть категорію" -#: lib/who_need_help_web/live/request_live/new.ex:434 -#: lib/who_need_help_web/live/request_live/new.ex:606 +#: lib/who_need_help_web/live/request_live/new.ex:475 +#: lib/who_need_help_web/live/request_live/new.ex:653 #, elixir-autogen, elixir-format msgid "Choose a place on the map or use your current location." msgstr "Оберіть місце на карті або використайте поточну геопозицію." @@ -4207,7 +4192,7 @@ msgid "Date" msgstr "" #: lib/who_need_help_web/live/notification_live.ex:656 -#: lib/who_need_help_web/live/request_live/new.ex:614 +#: lib/who_need_help_web/live/request_live/new.ex:661 #, elixir-autogen, elixir-format msgid "Enter coordinates manually" msgstr "Ввести координати вручну" @@ -4217,17 +4202,17 @@ msgstr "Ввести координати вручну" msgid "Enter the six digits shown to the requester." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:488 +#: lib/who_need_help_web/live/request_live/new.ex:535 #, elixir-autogen, elixir-format msgid "Exact point" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:680 +#: lib/who_need_help_web/live/request_live/new.ex:735 #, elixir-autogen, elixir-format msgid "Fix the following details and publish again:" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:616 +#: lib/who_need_help_web/live/request_live/new.ex:663 #, elixir-autogen, elixir-format msgid "For an approximate area, these coordinates are the area center—not your exact position." msgstr "Для приблизної зони ці координати задають центр області, а не вашу точну позицію." @@ -4268,7 +4253,7 @@ msgstr "" msgid "Helper:" msgstr "Помічник" -#: lib/who_need_help_web/live/request_live/new.ex:534 +#: lib/who_need_help_web/live/request_live/new.ex:581 #, elixir-autogen, elixir-format msgid "Helpers will see only the area or landmark written above. You can share a live location later after matching." msgstr "Помічники бачитимуть лише вказаний вище район або орієнтир. Після збігу можна окремо поділитися геопозицією." @@ -4283,29 +4268,29 @@ msgstr "" msgid "If this email belongs to an existing account, a secure sign-in link will arrive shortly." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:420 +#: lib/who_need_help_web/live/request_live/new.ex:460 #, elixir-autogen, elixir-format msgid "In 1 hour" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:421 +#: lib/who_need_help_web/live/request_live/new.ex:461 #, elixir-autogen, elixir-format msgid "In 3 hours" msgstr "" #: lib/who_need_help_web/live/notification_live.ex:574 -#: lib/who_need_help_web/live/request_live/new.ex:444 +#: lib/who_need_help_web/live/request_live/new.ex:485 #, elixir-autogen, elixir-format msgid "Location is unavailable in this browser." msgstr "Геопозиція недоступна в цьому браузері." #: lib/who_need_help_web/live/notification_live.ex:576 -#: lib/who_need_help_web/live/request_live/new.ex:446 +#: lib/who_need_help_web/live/request_live/new.ex:487 #, elixir-autogen, elixir-format msgid "Location permission was denied." msgstr "Доступ до геопозиції відхилено." -#: lib/who_need_help_web/live/request_live/new.ex:574 +#: lib/who_need_help_web/live/request_live/new.ex:621 #, elixir-autogen, elixir-format msgid "Move the map area so it covers a useful public meeting place." msgstr "Перемістіть зону так, щоб вона охоплювала зручне публічне місце зустрічі." @@ -4315,17 +4300,17 @@ msgstr "Перемістіть зону так, щоб вона охоплюва msgid "New notice" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:532 +#: lib/who_need_help_web/live/request_live/new.ex:579 #, elixir-autogen, elixir-format msgid "No coordinates will be stored" msgstr "Координати не зберігатимуться" -#: lib/who_need_help_web/live/request_live/new.ex:443 +#: lib/who_need_help_web/live/request_live/new.ex:484 #, elixir-autogen, elixir-format msgid "No map coordinates will be stored." msgstr "Координати на карті не зберігатимуться." -#: lib/who_need_help_web/live/request_live/new.ex:502 +#: lib/who_need_help_web/live/request_live/new.ex:549 #, elixir-autogen, elixir-format msgid "No map location" msgstr "Не показувати місце на карті" @@ -4340,7 +4325,7 @@ msgstr "Не додано соціальних посилань." msgid "Only notices submitted while signed in appear here. Notices submitted without an account remain accessible through their private email link." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:503 +#: lib/who_need_help_web/live/request_live/new.ex:550 #, elixir-autogen, elixir-format msgid "Only the public area description" msgstr "Лише публічний опис району" @@ -4382,7 +4367,7 @@ msgstr "" msgid "Read" msgstr "Прочитайте" -#: lib/who_need_help_web/live/request_live/new.ex:475 +#: lib/who_need_help_web/live/request_live/new.ex:522 #, elixir-autogen, elixir-format msgid "Recommended for privacy" msgstr "Рекомендовано для приватності" @@ -4397,7 +4382,7 @@ msgstr "Зареєструватися" msgid "Registration request accepted" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:417 +#: lib/who_need_help_web/live/request_live/new.ex:457 #, elixir-autogen, elixir-format, fuzzy msgid "Request expires" msgstr "Запит закінчується (UTC)" @@ -4407,7 +4392,7 @@ msgstr "Запит закінчується (UTC)" msgid "Request to join again" msgstr "Подати заявку на участь" -#: lib/who_need_help_web/live/request_live/new.ex:679 +#: lib/who_need_help_web/live/request_live/new.ex:734 #, elixir-autogen, elixir-format msgid "Request was not published" msgstr "" @@ -4460,7 +4445,7 @@ msgstr "Початок" msgid "Status updates go to the email address of your signed-in account." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:515 +#: lib/who_need_help_web/live/request_live/new.ex:562 #, elixir-autogen, elixir-format msgid "The map is unavailable. You can use the manual coordinate fallback." msgstr "Карта недоступна. Можна використати резервне ручне введення координат." @@ -4475,7 +4460,7 @@ msgstr "" msgid "This activity is closed. The group chat remains available as read-only history." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:457 +#: lib/who_need_help_web/live/request_live/new.ex:504 #, elixir-autogen, elixir-format msgid "This description is visible to everyone. Do not enter a private address." msgstr "Цей опис бачать усі. Не вказуйте приватну адресу." @@ -4505,7 +4490,7 @@ msgstr "" msgid "This person has not added a public bio yet." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:581 +#: lib/who_need_help_web/live/request_live/new.ex:628 #, elixir-autogen, elixir-format msgid "This point is public" msgstr "Цю точку видно всім" @@ -4536,12 +4521,12 @@ msgstr "Термін дії цієї заявки минув." msgid "Time" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:422 +#: lib/who_need_help_web/live/request_live/new.ex:462 #, elixir-autogen, elixir-format msgid "Tomorrow" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:582 +#: lib/who_need_help_web/live/request_live/new.ex:629 #, elixir-autogen, elixir-format msgid "Use a safe public meeting point instead of a private address." msgstr "Вкажіть безпечне публічне місце зустрічі замість приватної адреси." @@ -4552,7 +4537,7 @@ msgid "Use another email" msgstr "" #: lib/who_need_help_web/live/notification_live.ex:609 -#: lib/who_need_help_web/live/request_live/new.ex:549 +#: lib/who_need_help_web/live/request_live/new.ex:596 #, elixir-autogen, elixir-format, fuzzy msgid "Use my location" msgstr "Використати мою геопозицію" @@ -4590,7 +4575,7 @@ msgstr "" msgid "View my requests" msgstr "Нове звернення" -#: lib/who_need_help_web/live/request_live/new.ex:489 +#: lib/who_need_help_web/live/request_live/new.ex:536 #, elixir-autogen, elixir-format msgid "Visible before matching" msgstr "Видно до прийняття заявки" @@ -4605,12 +4590,12 @@ msgstr "" msgid "Voted" msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:462 +#: lib/who_need_help_web/live/request_live/new.ex:509 #, elixir-autogen, elixir-format msgid "What should people see?" msgstr "Що мають бачити інші?" -#: lib/who_need_help_web/live/request_live/new.ex:450 +#: lib/who_need_help_web/live/request_live/new.ex:493 #, elixir-autogen, elixir-format msgid "Where is help needed?" msgstr "Де потрібна допомога?" @@ -4625,7 +4610,7 @@ msgstr "" msgid "You are not a participant. You can send a new request while registration is open." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:591 +#: lib/who_need_help_web/live/request_live/new.ex:638 #, elixir-autogen, elixir-format msgid "You can separately share live location with the matched person and stop sharing at any time." msgstr "Можна окремо поділитися геопозицією з підібраною людиною та зупинити передачу будь-коли." @@ -4645,7 +4630,7 @@ msgstr "" msgid "Your completion confirmation is saved." msgstr "" -#: lib/who_need_help_web/live/request_live/new.ex:573 +#: lib/who_need_help_web/live/request_live/new.ex:620 #, elixir-autogen, elixir-format msgid "Your exact position is not shown" msgstr "Вашу точну позицію не показано" @@ -4670,37 +4655,37 @@ msgstr "" msgid "← Community helpers" msgstr "Помічники спільноти" -#: lib/who_need_help_web/live/request_live/new.ex:436 +#: lib/who_need_help_web/live/request_live/new.ex:477 #, elixir-autogen, elixir-format msgid "Area selected. Drag the green pin or click the map to move it." msgstr "Область вибрано. Перетягніть зелений маркер або натисніть на карту, щоб перемістити її." -#: lib/who_need_help_web/live/request_live/new.ex:523 +#: lib/who_need_help_web/live/request_live/new.ex:570 #, elixir-autogen, elixir-format msgid "Click the map or drag the green pin to move the area" msgstr "Натисніть на карту або перетягніть зелений маркер, щоб перемістити область" -#: lib/who_need_help_web/live/request_live/new.ex:526 +#: lib/who_need_help_web/live/request_live/new.ex:573 #, elixir-autogen, elixir-format msgid "Click the map or drag the red pin to move the point" msgstr "Натисніть на карту або перетягніть червоний маркер, щоб перемістити точку" -#: lib/who_need_help_web/live/request_live/new.ex:441 +#: lib/who_need_help_web/live/request_live/new.ex:482 #, elixir-autogen, elixir-format msgid "Drag to move the approximate area" msgstr "Перетягніть, щоб перемістити приблизну область" -#: lib/who_need_help_web/live/request_live/new.ex:442 +#: lib/who_need_help_web/live/request_live/new.ex:483 #, elixir-autogen, elixir-format msgid "Drag to move the exact point" msgstr "Перетягніть, щоб перемістити точну точку" -#: lib/who_need_help_web/live/request_live/new.ex:439 +#: lib/who_need_help_web/live/request_live/new.ex:480 #, elixir-autogen, elixir-format msgid "Exact point selected. Drag the red pin or click the map to move it." msgstr "Точну точку вибрано. Перетягніть червоний маркер або натисніть на карту, щоб перемістити її." -#: lib/who_need_help_web/live/request_live/index.ex:371 +#: lib/who_need_help_web/live/request_live/index.ex:434 #, elixir-autogen, elixir-format msgid "%{count} request in this map area" msgid_plural "%{count} requests in this map area" @@ -4708,32 +4693,34 @@ msgstr[0] "%{count} заявка в цій області карти" msgstr[1] "%{count} заявки в цій області карти" msgstr[2] "%{count} заявок у цій області карти" -#: lib/who_need_help_web/live/request_live/index.ex:354 +#: lib/who_need_help_web/live/activity_live/index.ex:396 +#: lib/who_need_help_web/live/request_live/index.ex:416 #, elixir-autogen, elixir-format msgid "Area or city" msgstr "Район або місто" -#: lib/who_need_help_web/live/request_live/index.ex:424 +#: lib/who_need_help_web/live/activity_live/index.ex:412 +#: lib/who_need_help_web/live/request_live/index.ex:487 #, elixir-autogen, elixir-format msgid "Choose an area on the map" msgstr "Виберіть область на карті" -#: lib/who_need_help_web/live/request_live/index.ex:301 +#: lib/who_need_help_web/live/request_live/index.ex:336 #, elixir-autogen, elixir-format msgid "Explore privacy-friendly areas and public exact meeting points chosen by requesters." msgstr "Переглядайте приватні області та точні публічні місця зустрічі, вибрані авторами заявок." -#: lib/who_need_help_web/live/request_live/index.ex:392 +#: lib/who_need_help_web/live/request_live/index.ex:455 #, elixir-autogen, elixir-format msgid "List" msgstr "Список" -#: lib/who_need_help_web/live/request_live/index.ex:495 +#: lib/who_need_help_web/live/request_live/index.ex:558 #, elixir-autogen, elixir-format msgid "Load more in this area" msgstr "Завантажити ще в цій області" -#: lib/who_need_help_web/live/request_live/index.ex:412 +#: lib/who_need_help_web/live/request_live/index.ex:475 #, elixir-autogen, elixir-format msgid "Map" msgstr "Карта" @@ -4743,47 +4730,50 @@ msgstr "Карта" msgid "Map preview" msgstr "Попередній перегляд карти" -#: lib/who_need_help_web/live/request_live/index.ex:436 +#: lib/who_need_help_web/live/activity_live/index.ex:424 +#: lib/who_need_help_web/live/request_live/index.ex:499 #, elixir-autogen, elixir-format msgid "Move or zoom the map to search somewhere else." msgstr "Перемістіть або масштабуйте карту, щоб шукати в іншому місці." -#: lib/who_need_help_web/live/request_live/index.ex:379 +#: lib/who_need_help_web/live/request_live/index.ex:442 #, elixir-autogen, elixir-format msgid "Move the map, then search the newly visible area." msgstr "Перемістіть карту, а потім виконайте пошук у новій видимій області." -#: lib/who_need_help_web/live/request_live/index.ex:434 +#: lib/who_need_help_web/live/request_live/index.ex:497 #, elixir-autogen, elixir-format msgid "No open requests in this area" msgstr "У цій області немає відкритих заявок" -#: lib/who_need_help_web/live/request_live/index.ex:426 +#: lib/who_need_help_web/live/request_live/index.ex:489 #, elixir-autogen, elixir-format msgid "Only requests from the selected map area will be loaded." msgstr "Буде завантажено лише заявки з вибраної області карти." -#: lib/who_need_help_web/live/request_live/index.ex:522 +#: lib/who_need_help_web/live/request_live/index.ex:585 #, elixir-autogen, elixir-format msgid "Open request" msgstr "Відкрити заявку" -#: lib/who_need_help_web/live/request_live/index.ex:355 +#: lib/who_need_help_web/live/activity_live/index.ex:397 +#: lib/who_need_help_web/live/request_live/index.ex:417 #, elixir-autogen, elixir-format msgid "Optional text search" msgstr "Необов’язковий текстовий пошук" -#: lib/who_need_help_web/live/request_live/index.ex:501 +#: lib/who_need_help_web/live/request_live/index.ex:564 #, elixir-autogen, elixir-format msgid "Requests without map coordinates appear only when their public area description matches the text search." msgstr "Заявки без координат на карті з’являються лише тоді, коли опис публічної області збігається з текстовим пошуком." -#: lib/who_need_help_web/live/request_live/index.ex:383 +#: lib/who_need_help_web/live/request_live/index.ex:446 #, elixir-autogen, elixir-format msgid "Results layout" msgstr "Розташування результатів" -#: lib/who_need_help_web/live/request_live/index.ex:533 +#: lib/who_need_help_web/live/activity_live/index.ex:508 +#: lib/who_need_help_web/live/request_live/index.ex:597 #, elixir-autogen, elixir-format msgid "Search this area" msgstr "Шукати в цій області" @@ -4793,19 +4783,19 @@ msgstr "Шукати в цій області" msgid "Static preview" msgstr "Статичний перегляд" -#: lib/who_need_help_web/live/request_live/index.ex:402 +#: lib/who_need_help_web/live/request_live/index.ex:465 #, elixir-autogen, elixir-format msgid "Together" msgstr "Разом" #: lib/who_need_help_web/controllers/page_html/home.html.heex:160 -#: lib/who_need_help_web/live/activity_live/index.ex:294 +#: lib/who_need_help_web/live/activity_live/index.ex:496 #: lib/who_need_help_web/live/activity_live/show.ex:545 #: lib/who_need_help_web/live/notification_live.ex:575 #: lib/who_need_help_web/live/notification_live.ex:594 -#: lib/who_need_help_web/live/request_live/index.ex:521 -#: lib/who_need_help_web/live/request_live/new.ex:445 -#: lib/who_need_help_web/live/request_live/new.ex:517 +#: lib/who_need_help_web/live/request_live/index.ex:584 +#: lib/who_need_help_web/live/request_live/new.ex:486 +#: lib/who_need_help_web/live/request_live/new.ex:564 #: lib/who_need_help_web/live/request_live/show.ex:1277 #, elixir-autogen, elixir-format msgid "Try map again" @@ -5192,6 +5182,7 @@ msgid "Nearby alert deleted." msgstr "" #: lib/who_need_help_web/live/notification_live.ex:429 +#: lib/who_need_help_web/live/request_live/index.ex:362 #, elixir-autogen, elixir-format msgid "Nearby requests" msgstr "" @@ -5529,7 +5520,7 @@ msgstr "Вибраний приклад:" msgid "WebGL is unavailable in this browser, so the full map cannot start. Select an example below or retry the map." msgstr "WebGL недоступний у цьому браузері, тому повна карта не може запуститися. Виберіть приклад нижче або спробуйте запустити карту ще раз." -#: lib/who_need_help_web/live/activity_live/index.ex:295 +#: lib/who_need_help_web/live/activity_live/index.ex:497 #: lib/who_need_help_web/live/activity_live/show.ex:546 #: lib/who_need_help_web/live/request_live/show.ex:1278 #, elixir-autogen, elixir-format @@ -5623,7 +5614,7 @@ msgstr "Запит про допомогу" msgid "I confirm this is not an emergency or request for medical advice, the medicine and arrangement are lawful, and a volunteer chooses whether to spend money." msgstr "Я підтверджую, що це не надзвичайна ситуація й не запит на медичну пораду, ліки та домовленість є законними, а волонтер сам вирішує, чи витрачати гроші." -#: lib/who_need_help_web/live/request_live/new.ex:376 +#: lib/who_need_help_web/live/request_live/new.ex:405 #, elixir-autogen, elixir-format msgid "If purchase is needed, accepting the request does not require the volunteer to spend money. Agree on the medicine, pharmacy requirements, payment, and any reimbursement only in the private matched chat." msgstr "Якщо ліки потрібно придбати, прийняття заявки не зобов’язує волонтера витрачати гроші. Узгоджуйте ліки, вимоги аптеки, оплату та можливе відшкодування лише у приватному чаті після збігу." @@ -6094,7 +6085,7 @@ msgstr "Тепер ваш відгук видно" msgid "Delivery settings" msgstr "Налаштування доставки" -#: lib/who_need_help_web/live/request_live/index.ex:478 +#: lib/who_need_help_web/live/request_live/index.ex:541 #, elixir-autogen, elixir-format msgid "Expires" msgstr "Спливає" @@ -6113,3 +6104,157 @@ msgstr "Сповіщення поруч" #, elixir-autogen, elixir-format msgid "Notification sections" msgstr "Розділи сповіщень" + +#: lib/who_need_help_web/live/activity_live/index.ex:492 +#, elixir-autogen, elixir-format +msgid "%{count} activities" +msgstr "Активностей: %{count}" + +#: lib/who_need_help_web/live/activity_live/index.ex:512 +#, elixir-autogen, elixir-format +msgid "%{count} activity in this map area" +msgid_plural "%{count} activities in this map area" +msgstr[0] "%{count} активність у цій області карти" +msgstr[1] "%{count} активності в цій області карти" +msgstr[2] "%{count} активностей у цій області карти" + +#: lib/who_need_help_web/live/request_live/index.ex:586 +#, elixir-autogen, elixir-format +msgid "%{count} requests" +msgstr "Запитів: %{count}" + +#: lib/who_need_help_web/live/activity_live/index.ex:530 +#, elixir-autogen, elixir-format +msgid "Activities you create or ask to join will appear here. Leaving removes an activity from this list." +msgstr "Створені вами активності й ті, до яких ви попросили приєднатися, з’являться тут. Після виходу активність зникне зі списку." + +#: lib/who_need_help_web/live/activity_live/index.ex:351 +#, elixir-autogen, elixir-format +msgid "Activity views" +msgstr "Розділи активностей" + +#: lib/who_need_help_web/live/request_live/new.ex:295 +#, elixir-autogen, elixir-format +msgid "Choose a category and describe the task clearly." +msgstr "Оберіть категорію та зрозуміло опишіть завдання." + +#: lib/who_need_help_web/live/request_live/new.ex:713 +#, elixir-autogen, elixir-format +msgid "Confirm the safety guidance before asking nearby people for help." +msgstr "Підтвердьте правила безпеки перед публікацією запиту." + +#: lib/who_need_help_web/live/request_live/index.ex:631 +#, elixir-autogen, elixir-format +msgid "Create request" +msgstr "Створити запит" + +#: lib/who_need_help_web/live/request_live/index.ex:645 +#, elixir-autogen, elixir-format +msgid "Create your first request" +msgstr "Створити перший запит" + +#: lib/who_need_help_web/live/request_live/new.ex:277 +#, elixir-autogen, elixir-format +msgid "Help details" +msgstr "Що потрібно зробити" + +#: lib/who_need_help_web/live/request_live/new.ex:279 +#, elixir-autogen, elixir-format +msgid "Location" +msgstr "Місце" + +#: lib/who_need_help_web/live/activity_live/index.ex:357 +#, elixir-autogen, elixir-format +msgid "My activities" +msgstr "Мої активності" + +#: lib/who_need_help_web/live/request_live/index.ex:363 +#: lib/who_need_help_web/live/request_live/index.ex:625 +#, elixir-autogen, elixir-format +msgid "My requests" +msgstr "Мої запити" + +#: lib/who_need_help_web/live/activity_live/index.ex:356 +#, elixir-autogen, elixir-format +msgid "Nearby activities" +msgstr "Активності поруч" + +#: lib/who_need_help_web/live/activity_live/index.ex:528 +#, elixir-autogen, elixir-format +msgid "No activities yet" +msgstr "Активностей поки немає" + +#: lib/who_need_help_web/live/activity_live/index.ex:422 +#, elixir-autogen, elixir-format +msgid "No open activities in this area" +msgstr "У цій області немає відкритих активностей" + +#: lib/who_need_help_web/live/request_live/index.ex:640 +#, elixir-autogen, elixir-format +msgid "No requests yet" +msgstr "Запитів поки немає" + +#: lib/who_need_help_web/live/activity_live/index.ex:414 +#, elixir-autogen, elixir-format +msgid "Only activities from the selected map area will be loaded." +msgstr "Буде завантажено лише активності з вибраної області карти." + +#: lib/who_need_help_web/live/activity_live/index.ex:491 +#, elixir-autogen, elixir-format +msgid "Open activity" +msgstr "Відкрити активність" + +#: lib/who_need_help_web/live/request_live/new.ex:273 +#, elixir-autogen, elixir-format +msgid "Request form steps" +msgstr "Кроки створення запиту" + +#: lib/who_need_help_web/live/request_live/index.ex:357 +#, elixir-autogen, elixir-format +msgid "Request views" +msgstr "Розділи запитів" + +#: lib/who_need_help_web/live/request_live/index.ex:642 +#, elixir-autogen, elixir-format +msgid "Requests you publish or accept will appear here." +msgstr "Тут з’являться запити, які ви створили або прийняли." + +#: lib/who_need_help_web/live/request_live/new.ex:280 +#, elixir-autogen, elixir-format +msgid "Review" +msgstr "Перевірка" + +#: lib/who_need_help_web/live/request_live/new.ex:712 +#, elixir-autogen, elixir-format +msgid "Review and publish" +msgstr "Перевірте та опублікуйте" + +#: lib/who_need_help_web/live/request_live/new.ex:441 +#, elixir-autogen, elixir-format +msgid "Set urgency and when this request should close." +msgstr "Укажіть терміновість і час закриття запиту." + +#: lib/who_need_help_web/live/request_live/new.ex:494 +#, elixir-autogen, elixir-format +msgid "Share only as much location detail as helpers need." +msgstr "Покажіть помічникам лише необхідну інформацію про місце." + +#: lib/who_need_help_web/live/activity_live/index.ex:494 +#, elixir-autogen, elixir-format +msgid "The map is unavailable in this browser. Activity details remain usable." +msgstr "Карта недоступна в цьому браузері. Інформація про активності залишається доступною." + +#: lib/who_need_help_web/live/request_live/new.ex:278 +#, elixir-autogen, elixir-format +msgid "Timing" +msgstr "Час" + +#: lib/who_need_help_web/live/request_live/index.ex:627 +#, elixir-autogen, elixir-format +msgid "Track requests you created and requests you accepted as a helper." +msgstr "Стежте за створеними запитами й тими, які ви прийняли як помічник." + +#: lib/who_need_help_web/live/request_live/new.ex:440 +#, elixir-autogen, elixir-format +msgid "When is help needed?" +msgstr "Коли потрібна допомога?" diff --git a/test/who_need_help/activities_test.exs b/test/who_need_help/activities_test.exs index b669f7f..8ba7cb4 100644 --- a/test/who_need_help/activities_test.exs +++ b/test/who_need_help/activities_test.exs @@ -5,6 +5,7 @@ defmodule WhoNeedHelp.ActivitiesTest do alias WhoNeedHelp.{Activities, Catalog, Trust} alias WhoNeedHelp.Activities.Activity + alias WhoNeedHelp.Help.DiscoveryViewport alias WhoNeedHelp.Repo alias WhoNeedHelp.Trust.AuditEvent @@ -351,6 +352,106 @@ defmodule WhoNeedHelp.ActivitiesTest do end) end + test "activity discovery loads only the selected map viewport", context do + {:ok, nearby} = + Activities.create_activity( + context.organizer_scope, + context.attrs + |> Map.put("title", "Nearby activity") + |> Map.put("latitude", "50.4501") + |> Map.put("longitude", "30.5234") + ) + + {:ok, far_away} = + Activities.create_activity( + context.organizer_scope, + context.attrs + |> Map.put("title", "Far-away activity") + |> Map.put("latitude", "52.5200") + |> Map.put("longitude", "13.4050") + ) + + viewport = viewport!(30.0, 50.0, 31.0, 51.0, 10) + + ids = + context.outsider_scope + |> Activities.paginate_open_activities(%{}, viewport: viewport, limit: 100) + |> Map.fetch!(:entries) + |> Enum.map(& &1.id) + + assert nearby.id in ids + refute far_away.id in ids + end + + test "activity map discovery clusters dense points and keeps sparse points", context do + for {offset, index} <- Enum.with_index([0.0, 0.00005, 0.0001], 1) do + assert {:ok, _activity} = + Activities.create_activity( + context.organizer_scope, + context.attrs + |> Map.put("title", "Dense activity #{index}") + |> Map.put("longitude", Float.to_string(30.5234 + offset)) + ) + end + + {:ok, sparse} = + Activities.create_activity( + context.organizer_scope, + context.attrs + |> Map.put("title", "Sparse activity") + |> Map.put("latitude", "50.8") + |> Map.put("longitude", "30.8") + ) + + items = + Activities.map_discovery_items( + context.outsider_scope, + %{}, + viewport!(30.0, 50.0, 31.0, 51.0, 9) + ) + + assert Enum.any?(items, &match?(%{type: "cluster", count: 3}, &1)) + + assert Enum.any?(items, fn + %{type: "activity", id: id} -> id == sparse.id + _item -> false + end) + end + + test "hidden activity is discoverable only through its public area description", context do + {:ok, hidden} = + Activities.create_activity( + context.organizer_scope, + context.attrs + |> Map.put("title", "Hidden-map activity") + |> Map.put("location_label", "Kyiv Podil riverside") + |> Map.put("location_visibility", "hidden") + ) + + viewport = viewport!(30.0, 50.0, 31.0, 51.0, 10) + + without_area = + Activities.paginate_open_activities(context.outsider_scope, %{}, + viewport: viewport, + limit: 100 + ) + + refute Enum.any?(without_area.entries, &(&1.id == hidden.id)) + + with_area = + Activities.paginate_open_activities( + context.outsider_scope, + %{"area" => "Podil"}, + viewport: viewport, + limit: 100 + ) + + assert Enum.any?(with_area.entries, &(&1.id == hidden.id)) + + assert Activities.map_discovery_items(context.outsider_scope, %{"area" => "Podil"}, viewport) == + [] + end + test "my activities are derived from the organizer and participant membership rows", context do {:ok, organized} = Activities.create_activity(context.organizer_scope, context.attrs) {:ok, request} = Activities.request_to_join(context.participant_scope, organized.id) @@ -474,6 +575,21 @@ defmodule WhoNeedHelp.ActivitiesTest do ) end + defp viewport!(west, south, east, north, zoom) do + {:ok, viewport} = + DiscoveryViewport.cast(%{ + west: west, + south: south, + east: east, + north: north, + zoom: zoom, + width: 1_200, + height: 720 + }) + + viewport + end + test "moderators can hide and restore a reported activity", context do moderator = user_fixture(display_name: "Activity moderator") diff --git a/test/who_need_help/mutual_aid_flow_test.exs b/test/who_need_help/mutual_aid_flow_test.exs index c23001f..11d2580 100644 --- a/test/who_need_help/mutual_aid_flow_test.exs +++ b/test/who_need_help/mutual_aid_flow_test.exs @@ -42,6 +42,17 @@ defmodule WhoNeedHelp.MutualAidFlowTest do request_attrs: request_attrs} end + test "my requests includes requests created by the user and requests accepted as helper", + context do + unrelated_user = user_fixture(display_name: "Unrelated member") + {:ok, request} = Help.create_request(context.requester_scope, context.request_attrs) + {:ok, _assignment} = Help.accept_request(context.helper_scope, request.id) + + assert Enum.map(Help.list_my_requests(context.requester_scope), & &1.id) == [request.id] + assert Enum.map(Help.list_my_requests(context.helper_scope), & &1.id) == [request.id] + assert Help.list_my_requests(user_scope_fixture(unrelated_user)) == [] + end + test "requester and helper complete a verified handover", context do {:ok, request} = Help.create_request(context.requester_scope, context.request_attrs) {:error, :own_request} = Help.accept_request(context.requester_scope, request.id) diff --git a/test/who_need_help_web/live/mutual_aid_live_test.exs b/test/who_need_help_web/live/mutual_aid_live_test.exs index 55db211..a4f7070 100644 --- a/test/who_need_help_web/live/mutual_aid_live_test.exs +++ b/test/who_need_help_web/live/mutual_aid_live_test.exs @@ -225,6 +225,51 @@ defmodule WhoNeedHelpWeb.MutualAidLiveTest do assert html =~ "Створити термінову заявку" end + test "request discovery separates nearby requests from the user's own work", %{ + conn: conn, + scope: scope + } do + category = Catalog.seed_defaults() + {:ok, request} = Help.create_request(scope, request_attrs(category)) + + {:ok, view, _html} = live(conn, ~p"/requests") + assert has_element?(view, "#request-discovery") + refute has_element?(view, "#my-requests") + + view + |> element("button[phx-click='set-scope'][phx-value-scope='mine']") + |> render_click() + + assert has_element?(view, "#my-requests") + assert has_element?(view, "#my-request-#{request.id}") + refute has_element?(view, "#request-discovery") + end + + test "activity discovery separates nearby plans from the user's participation", %{ + conn: conn, + scope: scope + } do + Catalog.seed_defaults() + + category = + Catalog.list_categories(:activity) + |> Enum.find(&(&1.slug == "coffee-meetup")) + + {:ok, activity} = Activities.create_activity(scope, activity_attrs(category)) + + {:ok, view, _html} = live(conn, ~p"/activities") + assert has_element?(view, "#activity-map") + refute has_element?(view, "#my-activities") + + view + |> element("button[phx-click='set-scope'][phx-value-scope='mine']") + |> render_click() + + assert has_element?(view, "#my-activities") + assert has_element?(view, "#my-activity-#{activity.id}") + refute has_element?(view, "#activity-map") + end + test "profile social-link creation uses the shared action limiter", %{conn: conn} do previous = Application.get_env(:who_need_help, :rate_limit_policies) @@ -334,7 +379,11 @@ defmodule WhoNeedHelpWeb.MutualAidLiveTest do Catalog.list_categories(:activity) |> Enum.find(&(&1.slug == "coffee-meetup")) - {:ok, view, _html} = build_conn() |> log_in_user(viewer) |> live(~p"/activities") + {:ok, view, _html} = + build_conn() + |> log_in_user(viewer) + |> live(activities_in_kyiv_path()) + assert has_element?(view, "#activity-map[data-map-recenter-label='Show location on map']") {:ok, _activity} = @@ -365,7 +414,10 @@ defmodule WhoNeedHelpWeb.MutualAidLiveTest do Catalog.list_categories(:activity) |> Enum.find(&(&1.slug == "coffee-meetup")) - {:ok, view, _html} = build_conn() |> log_in_user(viewer) |> live(~p"/activities") + {:ok, view, _html} = + build_conn() + |> log_in_user(viewer) + |> live(activities_in_kyiv_path()) activities = for index <- 1..25 do @@ -440,6 +492,22 @@ defmodule WhoNeedHelpWeb.MutualAidLiveTest do refute html =~ "pickup_status is required" end + test "new request form groups the mobile journey into stable jump steps", %{conn: conn} do + {:ok, view, _html} = live(conn, ~p"/requests/new") + + for id <- [ + "request-step-details", + "request-step-timing", + "request-location-workspace", + "request-step-review" + ] do + assert has_element?(view, "##{id}.request-form-section") + assert has_element?(view, ".request-form-progress a[href='##{id}']") + end + + assert has_element?(view, ".request-form-publish", "Publish request") + end + test "category descriptions use the current Ukrainian locale", %{conn: conn} do category = Catalog.seed_defaults() conn = get(conn, ~p"/?locale=uk") @@ -1468,6 +1536,10 @@ defmodule WhoNeedHelpWeb.MutualAidLiveTest do ~p"/requests?#{%{west: 30.0, south: 50.0, east: 31.0, north: 51.0, zoom: 10, width: 1200, height: 720, view: "split"}}" end + defp activities_in_kyiv_path do + ~p"/activities?#{%{west: 30.0, south: 50.0, east: 31.0, north: 51.0, zoom: 10, width: 1200, height: 720}}" + end + defp assert_eventually(fun, attempts \\ 50) defp assert_eventually(fun, attempts) when attempts > 0 do