Skip to content

Commit 9aadabb

Browse files
committed
feat: add bounty visibility and update bounty mode settings
1 parent 300cb17 commit 9aadabb

File tree

6 files changed

+48
-8
lines changed

6 files changed

+48
-8
lines changed

lib/algora/accounts/schemas/user.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ defmodule Algora.Accounts.User do
6060
field :need_avatar, :boolean, default: false
6161

6262
field :bounty_mode, Ecto.Enum,
63-
values: [:community, :experts_only, :public],
64-
default: :community
63+
values: [:community, :exclusive, :public],
64+
default: :public
6565

6666
field :website_url, :string
6767
field :twitter_url, :string

lib/algora/bounties/bounties.ex

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -960,7 +960,12 @@ defmodule Algora.Bounties do
960960
case status do
961961
:open ->
962962
# TODO: persist state as separate field
963-
where(query, [t: t], fragment("(?->>'state' != 'closed')", t.provider_meta))
963+
query = where(query, [t: t], fragment("(?->>'state' != 'closed')", t.provider_meta))
964+
965+
case criteria[:owner_id] do
966+
nil -> where(query, [b], b.visibility == :public)
967+
_org_id -> where(query, [b], b.visibility in [:public, :community])
968+
end
964969

965970
_ ->
966971
query
@@ -1074,7 +1079,8 @@ defmodule Algora.Bounties do
10741079
where: b.status != :cancelled,
10751080
where: not is_nil(b.amount),
10761081
# TODO: persist state as separate field
1077-
where: fragment("(?->>'state' != 'closed')", t.provider_meta)
1082+
where: fragment("(?->>'state' != 'closed')", t.provider_meta),
1083+
where: b.visibility in [:public, :community]
10781084

10791085
rewards_query =
10801086
from tx in Transaction,

lib/algora/bounties/schemas/bounty.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ defmodule Algora.Bounties.Bounty do
1010
field :status, Ecto.Enum, values: [:open, :cancelled, :paid]
1111
field :number, :integer, default: 0
1212
field :autopay_disabled, :boolean, default: false
13+
field :visibility, Ecto.Enum, values: [:community, :experts_only, :public], default: :public
1314

1415
belongs_to :ticket, Algora.Workspace.Ticket
1516
belongs_to :owner, User
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
defmodule Algora.Repo.Migrations.AddVisibilityToBounties do
2+
use Ecto.Migration
3+
4+
def change do
5+
# Set default for bounty_mode in users table
6+
alter table(:users) do
7+
modify :bounty_mode, :string, default: "public"
8+
end
9+
10+
# Add visibility field to bounties table
11+
alter table(:bounties) do
12+
add :visibility, :string, default: "public"
13+
end
14+
15+
# Create a check constraint to ensure visibility is one of the allowed values
16+
create constraint("bounties", :visibility_values,
17+
check: "visibility IN ('community', 'exclusive', 'public')"
18+
)
19+
end
20+
end

scripts/database_migration.exs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,12 @@ defmodule DatabaseMigration do
236236
"activated" => row["active"],
237237
"max_open_attempts" => row["max_open_attempts"],
238238
"manual_assignment" => row["manual_assignment"],
239-
"bounty_mode" => nil,
239+
"bounty_mode" =>
240+
if true?(row["enabled_community_mode"]) do
241+
:community
242+
else
243+
:public
244+
end,
240245
"hourly_rate_min" => nil,
241246
"hourly_rate_max" => nil,
242247
"hours_per_week" => nil,
@@ -378,7 +383,13 @@ defmodule DatabaseMigration do
378383
"inserted_at" => row["created_at"],
379384
"updated_at" => row["updated_at"],
380385
"number" => row["number"],
381-
"autopay_disabled" => row["autopay_disabled"]
386+
"autopay_disabled" => row["autopay_disabled"],
387+
"visibility" =>
388+
cond do
389+
row["visibility"] == "unlisted" -> :exclusive
390+
true?(owner["enabled_community_mode"]) -> :community
391+
true -> :public
392+
end
382393
}
383394
end
384395
end
@@ -1309,6 +1320,8 @@ defmodule DatabaseMigration do
13091320

13101321
defp nullish?(value), do: is_nil(deserialize_value(value))
13111322

1323+
defp true?(value), do: deserialize_value(value) == true
1324+
13121325
defp or_else(value, default), do: if(nullish?(value), do: default, else: value)
13131326

13141327
defp clear_tables! do

scripts/v1-progress.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@
7676
- github_res_comment_id: 1
7777
- type: 0
7878
- kind: 0
79-
- visibility: 0
79+
- visibility: 1
8080
- number: 1
8181
- deleted: 0
8282
- reward_type: 0
@@ -351,7 +351,7 @@
351351
- twitter_url: 1
352352
- website_url: 1
353353
- youtube_url: 1
354-
- enabled_community_mode: 0
354+
- enabled_community_mode: 1
355355
- webhook_url_discord: -1
356356
- webhook_url_slack: -1
357357
- accepts_community_bounties: 0

0 commit comments

Comments
 (0)