Skip to content

Commit eb31e33

Browse files
authored
Merge pull request #1250 from code-corps/fix-more-dialyzer
Update stripity_stripe, refactor, fix dialyzer errors
2 parents 065a300 + 4aad983 commit eb31e33

16 files changed

+94
-53
lines changed

lib/code_corps/cloudex/cloudex_test.ex

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,12 @@ defmodule CloudexTest do
1414
end
1515
end
1616

17-
@spec upload(String.t) :: {:ok, %Cloudex.UploadedImage{}}
17+
@spec upload(String.t) :: {:ok, Cloudex.UploadedImage.t}
1818
def upload(_url) do
1919
{:ok, %Cloudex.UploadedImage{public_id: fake_cloudinary_id()}}
2020
end
2121

2222
defp fake_cloudinary_id do
23-
:crypto.strong_rand_bytes(5)
24-
|> Base.encode64
23+
:crypto.strong_rand_bytes(5) |> Base.encode64()
2524
end
2625
end

lib/code_corps/cloudex/uploader.ex

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ defmodule CodeCorps.Cloudex.Uploader do
22

33
@cloudex Application.get_env(:code_corps, :cloudex)
44

5-
def upload(url) do
6-
@cloudex.upload(url)
5+
@spec upload(list | String.t) :: Cloudex.upload_result()
6+
def upload(list_or_url) do
7+
@cloudex.upload(list_or_url)
78
end
89
end

lib/code_corps/emails/receipt_email.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ defmodule CodeCorps.Emails.ReceiptEmail do
3030
end
3131
end
3232

33-
@spec get_subscription(String.t) :: Subscription.t | nil
33+
@spec get_subscription(String.t) :: StripeConnectSubscription.t | nil
3434
defp get_subscription(subscription_id_from_stripe) do
3535
StripeConnectSubscription
3636
|> Repo.get_by(id_from_stripe: subscription_id_from_stripe)

lib/code_corps/model/organization_invite.ex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ defmodule CodeCorps.OrganizationInvite do
55

66
use CodeCorps.Model
77

8+
@type t :: %__MODULE__{}
9+
810
schema "organization_invites" do
911
field :code, :string
1012
field :email, :string

lib/code_corps/model/stripe_connect_subscription.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ defmodule CodeCorps.StripeConnectSubscription do
6363
:quantity, :stripe_connect_plan_id, :user_id
6464
]
6565

66-
@spec create_changeset(CodeCorps.StripeConnectPlan.t, map) :: Ecto.Changeset.t
66+
@spec create_changeset(CodeCorps.StripeConnectSubscription.t, map) :: Ecto.Changeset.t
6767
def create_changeset(struct, params \\ %{}) do
6868
struct
6969
|> cast(params, @permitted_params)
@@ -75,7 +75,7 @@ defmodule CodeCorps.StripeConnectSubscription do
7575

7676
@update_params [:cancelled_at, :current_period_end, :current_period_start, :ended_at, :quantity, :start, :status]
7777

78-
@spec webhook_update_changeset(CodeCorps.StripeConnectPlan.t, map) :: Ecto.Changeset.t
78+
@spec webhook_update_changeset(CodeCorps.StripeConnectSubscription.t, map) :: Ecto.Changeset.t
7979
def webhook_update_changeset(struct, params \\ %{}) do
8080
struct
8181
|> cast(params, @update_params)

lib/code_corps/services/markdown_renderer_service.ex

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,34 @@ defmodule CodeCorps.Services.MarkdownRendererService do
55

66
alias Ecto.Changeset
77

8-
@spec render_markdown_to_html(Changeset.t, atom, atom) :: Changeset.t
8+
@spec render_markdown_to_html(Changeset.t(), atom, atom) :: Changeset.t()
99
def render_markdown_to_html(%Changeset{valid?: false} = changeset, _, _), do: changeset
1010
def render_markdown_to_html(changeset, source_field, destination_field) do
11-
case Changeset.get_change(changeset, source_field) do
12-
"" -> Changeset.put_change(changeset, destination_field, nil)
13-
nil -> changeset
14-
markdown -> markdown |> convert_into_html() |> put_into(changeset, destination_field)
15-
end
11+
change = changeset |> Changeset.get_change(source_field)
12+
changeset |> handle_change(change, destination_field)
1613
end
1714

18-
@spec convert_into_html(String.t) :: String.t
19-
defp convert_into_html(markdown) do
20-
# Prism.js requires a `language-` prefix in code classes
21-
# See: https://github.com/pragdave/earmark#syntax-highlightning
22-
Earmark.as_html!(markdown, %Earmark.Options{code_class_prefix: "language-"})
15+
@spec handle_change(Changeset.t(), String.t() | nil, atom) :: Changeset.t()
16+
defp handle_change(changeset, nil, _), do: changeset
17+
defp handle_change(changeset, "", destination_field) do
18+
Changeset.put_change(changeset, destination_field, nil)
19+
end
20+
defp handle_change(changeset, lines, destination_field) when is_binary(lines) do
21+
lines
22+
|> convert_into_html()
23+
|> put_into(changeset, destination_field)
24+
end
25+
26+
# Prism.js requires a `language-` prefix in code classes
27+
# See: https://github.com/pragdave/earmark#syntax-highlightning
28+
@spec convert_into_html(String.t()) :: String.t()
29+
defp convert_into_html(lines) do
30+
lines
31+
|> Earmark.as_html!(%Earmark.Options{code_class_prefix: "language-"})
2332
end
2433

25-
@spec put_into(String.t, Changeset.t, atom) :: Changeset.t
34+
@spec put_into(String.t(), Changeset.t(), atom) :: Changeset.t()
2635
defp put_into(html, changeset, destination_field) do
27-
Changeset.put_change(changeset, destination_field, html)
36+
changeset |> Changeset.put_change(destination_field, html)
2837
end
2938
end

lib/code_corps/services/user_service.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,15 +83,15 @@ defmodule CodeCorps.Services.UserService do
8383
end
8484
end
8585

86-
@spec do_update_connect_customers(%StripePlatformCustomer{}, map) :: [%StripeConnectCustomer{}]
86+
@spec do_update_connect_customers(StripePlatformCustomer.t, map) :: [{:ok, StripeConnectCustomer.t}] | [{:error, Stripe.Error.t}]
8787
defp do_update_connect_customers(stripe_platform_customer, attributes) do
8888
stripe_platform_customer
8989
|> Repo.preload([stripe_connect_customers: :stripe_connect_account])
9090
|> Map.get(:stripe_connect_customers)
9191
|> Enum.map(&do_update_connect_customer(&1, attributes))
9292
end
9393

94-
@spec do_update_connect_customer(%StripeConnectCustomer{}, map) :: [%StripeConnectCustomer{}]
94+
@spec do_update_connect_customer(StripeConnectCustomer.t, map) :: {:ok, StripeConnectCustomer.t} | {:error, Stripe.Error.t}
9595
defp do_update_connect_customer(%StripeConnectCustomer{} = stripe_connect_customer, attributes) do
9696
StripeConnectCustomerService.update(stripe_connect_customer, attributes)
9797
end

lib/code_corps/stripe_service/events/connect_charge_succeeded.ex

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,19 @@ defmodule CodeCorps.StripeService.Events.ConnectChargeSucceeded do
99
@api Application.get_env(:code_corps, :stripe)
1010

1111
def handle(%{data: %{object: %{id: id_from_stripe}}, user_id: connect_account_id_from_stripe}) do
12-
with {:ok, charge} <- create_charge(id_from_stripe, connect_account_id_from_stripe) do
13-
charge |> track_created
12+
with {:ok, %StripeConnectCharge{} = charge} <- StripeConnectChargeService.create(id_from_stripe, connect_account_id_from_stripe) do
13+
charge |> track_created()
1414

1515
charge
1616
|> try_create_receipt(connect_account_id_from_stripe)
17-
|> maybe_send_receipt
17+
|> maybe_send_receipt()
1818
else
1919
failure -> failure
2020
end
2121
end
2222

23-
defp create_charge(id_from_stripe, account_id_from_stripe) do
24-
StripeConnectChargeService.create(id_from_stripe, account_id_from_stripe)
25-
end
26-
2723
defp try_create_receipt(%StripeConnectCharge{invoice_id_from_stripe: invoice_id} = charge, account_id) do
28-
with {:ok, %Stripe.Invoice{} = invoice} <- retrieve_invoice(invoice_id, account_id),
24+
with {:ok, %Stripe.Invoice{} = invoice} <- @api.Invoice.retrieve(invoice_id, connect_account: account_id),
2925
%Bamboo.Email{} = receipt <- Emails.ReceiptEmail.create(charge, invoice)
3026
do
3127
{:ok, charge, receipt}
@@ -34,10 +30,6 @@ defmodule CodeCorps.StripeService.Events.ConnectChargeSucceeded do
3430
end
3531
end
3632

37-
defp retrieve_invoice(invoice_id, account_id) do
38-
@api.Invoice.retrieve(invoice_id, connect_account: account_id)
39-
end
40-
4133
defp maybe_send_receipt({:ok, charge, receipt}) do
4234
with %Bamboo.Email{} = email <- receipt |> Mailer.deliver_now do
4335
{:ok, charge, email}

lib/code_corps/stripe_service/stripe_connect_charge_service.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@ defmodule CodeCorps.StripeService.StripeConnectChargeService do
66

77
@api Application.get_env(:code_corps, :stripe)
88

9-
@spec create(String.t, String.t) :: Ecto.Changeset.t
9+
@spec create(String.t, String.t) :: {:ok, StripeConnectCharge.t} | {:error, Ecto.Changeset.t}
1010
def create(id_from_stripe, connect_account_id_from_stripe) do
1111
with {:ok, %StripeConnectAccount{} = stripe_connect_account} <- get_connect_account(connect_account_id_from_stripe),
1212
{:ok, %Stripe.Charge{} = api_charge} <- @api.Charge.retrieve(id_from_stripe, connect_account: connect_account_id_from_stripe),
1313
{:ok, params} = StripeConnectChargeAdapter.to_params(api_charge, stripe_connect_account)
1414
do
1515
%StripeConnectCharge{}
1616
|> StripeConnectCharge.create_changeset(params)
17-
|> Repo.insert
17+
|> Repo.insert()
1818
end
1919
end
2020

lib/code_corps/stripe_service/stripe_connect_plan.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ defmodule CodeCorps.StripeService.StripeConnectPlanService do
2525
{:ok, %Project{}} <- ProjectCanEnableDonations.validate(project),
2626
%{} = create_attributes <- get_create_attributes(project_id),
2727
connect_account_id <- project.organization.stripe_connect_account.id_from_stripe,
28-
{:ok, plan} <- @api.Plan.create(create_attributes, connect_account: connect_account_id),
28+
{:ok, %Stripe.Plan{} = plan} <- @api.Plan.create(create_attributes, connect_account: connect_account_id),
2929
{:ok, params} <- StripeConnectPlanAdapter.to_params(plan, attributes)
3030
do
3131
%StripeConnectPlan{}
3232
|> StripeConnectPlan.create_changeset(params)
33-
|> Repo.insert
33+
|> Repo.insert()
3434
else
3535
failure -> failure
3636
end

0 commit comments

Comments
 (0)