@@ -43,20 +43,27 @@ fun SupportDeveloperHelper(
4343
4444 var pendingChangeProductId by remember { mutableStateOf<String ?>(null ) }
4545
46- // "Direct" tab — GitHub Sponsors + Patreon + PayPal. Always available, including in the store
46+ // "Direct" tab — GitHub Sponsors + Patreon + Ko-fi + Buy Me a Coffee + PayPal, the same five
47+ // routes the website and .github/FUNDING.yml advertise. Always available, including in the store
4748 // build. Resolve strings via stringResource (configuration-aware) in composable scope, then pass
4849 // them into remember as keys so the list recomputes on locale/config change.
4950 val sponsorsTitle = stringResource(R .string.sponsor_github_title)
5051 val sponsorsDesc = stringResource(R .string.sponsor_github_desc)
5152 val patreonTitle = stringResource(R .string.become_patreon_title)
5253 val patreonDesc = stringResource(R .string.become_patreon_desc)
54+ val kofiTitle = stringResource(R .string.support_kofi_title)
55+ val kofiDesc = stringResource(R .string.support_kofi_desc)
56+ val coffeeTitle = stringResource(R .string.buy_me_a_coffee_title)
57+ val coffeeDesc = stringResource(R .string.buy_me_a_coffee_desc)
5358 val paypalTitle = stringResource(R .string.donate_paypal_title)
5459 val paypalDesc = stringResource(R .string.donate_paypal_desc)
5560 val directActions = remember(
56- sponsorsTitle, sponsorsDesc, patreonTitle, patreonDesc, paypalTitle, paypalDesc
61+ sponsorsTitle, sponsorsDesc, patreonTitle, patreonDesc,
62+ kofiTitle, kofiDesc, coffeeTitle, coffeeDesc, paypalTitle, paypalDesc
5763 ) {
5864 listOf (
59- // First deliberately: lowest fees of the three, and it sits beside the source.
65+ // First deliberately: lowest fees of the five, and it sits beside the source. After it,
66+ // recurring-capable before one-off.
6067 SupportAction (
6168 iconRes = R .drawable.brand_github,
6269 title = sponsorsTitle,
@@ -80,6 +87,26 @@ fun SupportDeveloperHelper(
8087 onDismiss()
8188 }
8289 ),
90+ SupportAction (
91+ iconRes = R .drawable.brand_kofi,
92+ title = kofiTitle,
93+ description = kofiDesc,
94+ onClick = {
95+ val intent = Intent (Intent .ACTION_VIEW , " https://ko-fi.com/trinadh" .toUri())
96+ runCatching { context.startActivity(intent) }
97+ onDismiss()
98+ }
99+ ),
100+ SupportAction (
101+ iconRes = R .drawable.brand_buymeacoffee,
102+ title = coffeeTitle,
103+ description = coffeeDesc,
104+ onClick = {
105+ val intent = Intent (Intent .ACTION_VIEW , " https://www.buymeacoffee.com/trinadh" .toUri())
106+ runCatching { context.startActivity(intent) }
107+ onDismiss()
108+ }
109+ ),
83110 SupportAction (
84111 iconRes = R .drawable.shield_with_heart,
85112 title = paypalTitle,
0 commit comments