@@ -242,8 +242,9 @@ defmodule AlgoraWeb.Org.JobLive do
242242 <%= for { tab , label , count } <- [
243243 { "applicants" , "Applicants" , length ( @ applicants ) } ,
244244 { "imports" , "Imports" , length ( @ imports ) } ,
245+ if ( length ( @ stargazers ) > 0 , do: { "stargazers" , "Stargazers" , length ( @ stargazers ) } , else: nil ) ,
245246 { "matches" , "Matches" , length ( @ matches ) }
246- ] do %>
247+ ] |> Enum . reject ( & is_nil ( & 1 ) ) do %>
247248 < label class = { [
248249 "group relative flex cursor-pointer rounded-lg px-4 py-2 shadow-sm focus:outline-none" ,
249250 "border-2 bg-background transition-all duration-200 hover:border-primary hover:bg-primary/10" ,
@@ -359,7 +360,7 @@ defmodule AlgoraWeb.Org.JobLive do
359360 </ . card >
360361 <% else %>
361362 < div class = "grid grid-cols-1 gap-4 lg:grid-cols-3 " >
362- <%= for match <- @ matches |> Enum . take ( if @ current_org . hiring_subscription == :active , do: length ( @ matches ) , else: 15 ) do %>
363+ <%= for match <- @ truncated_matches do %>
363364 < div >
364365 < . match_card
365366 user = { match . user }
@@ -369,20 +370,54 @@ defmodule AlgoraWeb.Org.JobLive do
369370 />
370371 </ div >
371372 <% end %>
372- <%= if @ current_org . hiring_subscription != :active do %>
373+ <%= if @ current_org . hiring_subscription != :active && length ( @ truncated_matches ) > 0 do %>
373374 < div class = "relative lg:col-span-3 " >
374375 < img
375376 src = { ~p" /images/screenshots/job-matches-more.png" }
376377 class = "w-full aspect-[1368/398] "
377378 />
378379 < div class = "absolute inset-0 flex items-center font-bold text-foreground justify-center text-3xl md:text-4xl " >
379- + { length ( @ matches ) - 15 } more matches
380+ + { length ( @ matches ) - length ( @ truncated_matches ) } more matches
380381 </ div >
381382 </ div >
382383 <% end %>
383384 </ div >
384385 <% end %>
385386 </ . section >
387+ <% "stargazers" - > %>
388+ < . section title = "Stargazers " subtitle = "Top stargazers of your repositories " >
389+ <: actions >
390+ < . button variant = "default " phx-click = "toggle_import_drawer " >
391+ Import
392+ </ . button >
393+ </: actions >
394+ <%= if Enum . empty? ( @ stargazers ) do %>
395+ < . card class = "rounded-lg bg-card py-12 text-center lg:rounded-[2rem] " >
396+ < . card_header >
397+ < div class = "mx-auto mb-2 rounded-full bg-muted p-4 " >
398+ < . icon name = "tabler-users " class = "h-8 w-8 text-muted-foreground " />
399+ </ div >
400+ < . card_title > No stargazers yet</ . card_title >
401+ < . card_description >
402+ Stargazers will appear here once you import your repositories
403+ </ . card_description >
404+ </ . card_header >
405+ </ . card >
406+ <% else %>
407+ < div class = "grid grid-cols-1 gap-4 lg:grid-cols-3 " >
408+ <%= for stargazer <- @ stargazers do %>
409+ < div >
410+ < . match_card
411+ user = { stargazer . user }
412+ tech_stack = { @ job . tech_stack |> Enum . take ( 1 ) }
413+ contributions = { Map . get ( @ contributions_map , stargazer . user . id , [ ] ) }
414+ contract_type = "bring_your_own "
415+ />
416+ </ div >
417+ <% end %>
418+ </ div >
419+ <% end %>
420+ </ . section >
386421 <% end %>
387422 </ div >
388423
@@ -859,19 +894,32 @@ defmodule AlgoraWeb.Org.JobLive do
859894
860895 defp assign_applicants ( socket ) do
861896 all_applicants = Jobs . list_job_applications ( socket . assigns . job )
897+ stargazers = Algora.Workspace . list_stargazers ( socket . assigns . current_org . id )
862898 applicants = Enum . reject ( all_applicants , & & 1 . imported_at )
863899 imports = Enum . filter ( all_applicants , & & 1 . imported_at )
864900 matches = Settings . get_job_matches ( socket . assigns . job )
865901
866- developers = matches |> Enum . concat ( all_applicants ) |> Enum . map ( & & 1 . user )
902+ truncated_matches =
903+ case Code . ensure_compiled ( AlgoraCloud ) do
904+ { :module , _ } -> AlgoraCloud . truncate_matches ( socket . assigns . current_org , matches )
905+ _ -> Enum . take ( matches , 3 )
906+ end
907+
908+ developers =
909+ matches
910+ |> Enum . concat ( all_applicants )
911+ |> Enum . concat ( stargazers )
912+ |> Enum . map ( & & 1 . user )
867913
868914 contributions_map = fetch_applicants_contributions ( developers , socket . assigns . job . tech_stack )
869915
870916 socket
871917 |> assign ( :developers , developers )
872918 |> assign ( :applicants , sort_by_contributions ( socket . assigns . job , applicants , contributions_map ) )
873919 |> assign ( :imports , sort_by_contributions ( socket . assigns . job , imports , contributions_map ) )
920+ |> assign ( :stargazers , sort_by_contributions ( socket . assigns . job , stargazers , contributions_map ) )
874921 |> assign ( :matches , matches )
922+ |> assign ( :truncated_matches , truncated_matches )
875923 |> assign ( :contributions_map , contributions_map )
876924 end
877925
0 commit comments