Skip to content
This repository was archived by the owner on Sep 7, 2023. It is now read-only.

Commit 5e6fdab

Browse files
authored
Feature/configurable telegram bot url (dialectlabs#185)
* Use dapp-configured telegram bot if present * Disable auto-subscription on telegram address save * Make telegram bot mandatory in dapp * Enable subscription after creating address in sma, email and telegram * Bump @dialectlabs/sdk dependency * Update changelogs
1 parent 4975f53 commit 5e6fdab

8 files changed

Lines changed: 49 additions & 16 deletions

File tree

packages/dialect-react-sdk/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## [UNRELEASED]
44

5+
## [1.0.0-beta.29] - 2022-08-30
6+
7+
- feature: support dapp-configured telegram bots
8+
59
## [1.0.0-beta.28] - 2022-08-25
610

711
- feature: expose package version

packages/dialect-react-sdk/hooks/useDapp.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,13 @@ interface UseDappValue {
1515

1616
interface UseDappParams {
1717
refreshInterval?: number;
18+
verified?: boolean;
1819
}
1920

20-
function useDapp({ refreshInterval }: UseDappParams = EMPTY_OBJ): UseDappValue {
21+
function useDapp({
22+
refreshInterval,
23+
verified = true,
24+
}: UseDappParams = EMPTY_OBJ): UseDappValue {
2125
const { dapps } = useDialectSdk();
2226
const {
2327
info: { wallet },
@@ -30,7 +34,7 @@ function useDapp({ refreshInterval }: UseDappParams = EMPTY_OBJ): UseDappValue {
3034

3135
const { data: dappsList = EMPTY_ARR } = useSWR(
3236
DAPPS_CACHE_KEY,
33-
() => dapps.findAll({ verified: true }),
37+
() => dapps.findAll({ verified }),
3438
{
3539
refreshInterval: 0,
3640
revalidateIfStale: false,

packages/dialect-react-sdk/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"url": "https://github.com/dialectlabs/react"
3333
},
3434
"dependencies": {
35-
"@dialectlabs/sdk": "0.7.1",
35+
"@dialectlabs/sdk": "0.8.0",
3636
"nanoid": "^4.0.0",
3737
"swr": "^1.3.0"
3838
},

packages/dialect-react-ui/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## [UNRELEASED]
44

5+
## [1.0.0-beta.51] - 2022-08-30
6+
7+
- feature: support dapp-configured telegram bots
8+
59
## [1.0.0-beta.50] - 2022-08-26
610

711
- fix: polling for chat components

packages/dialect-react-ui/components/Notifications/screens/NewSettings/Email.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ const Email = () => {
7474

7575
const createEmail = useCallback(async () => {
7676
try {
77-
await createAddress({ value: email });
77+
const address = await createAddress({ value: email });
78+
await toggleSubscription({ enabled: true, address });
7879
setError(null);
7980
} catch (e) {
8081
setError(e as Error);

packages/dialect-react-ui/components/Notifications/screens/NewSettings/Sms.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ const Sms = () => {
7070

7171
const saveSmsNumber = async () => {
7272
try {
73-
await createAddress({ value: smsNumber });
73+
const address = await createAddress({ value: smsNumber });
74+
await toggleSubscription({ enabled: true, address });
7475
setError(null);
7576
} catch (e) {
7677
setError(e as Error);

packages/dialect-react-ui/components/Notifications/screens/NewSettings/Telegram.tsx

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@ import { useTheme } from '../../../common/providers/DialectThemeProvider';
33
import clsx from 'clsx';
44
import {
55
AddressType,
6+
useDapp,
7+
useDialectDapp,
8+
useDialectSdk,
69
useNotificationChannel,
710
useNotificationChannelDappSubscription,
8-
useDialectSdk,
911
} from '@dialectlabs/react-sdk';
10-
import { useEffect, useState } from 'react';
12+
import { useEffect, useMemo, useState } from 'react';
1113
import { RightAdornment } from './RightAdorment';
1214
import { VerificationInput } from './VerificationInput';
1315
import { P } from '../../../common/preflighted';
@@ -42,6 +44,9 @@ const Telegram = () => {
4244
isToggling,
4345
} = useNotificationChannelDappSubscription({ addressType });
4446

47+
const { dapps } = useDapp({ verified: false });
48+
const { dappAddress } = useDialectDapp();
49+
4550
const { textStyles, colors } = useTheme();
4651

4752
const [telegramUsername, setTelegramUsername] = useState(
@@ -114,10 +119,24 @@ const Telegram = () => {
114119
}
115120
};
116121

117-
const botURL =
122+
const buildBotUrl = (botUsername: string) =>
123+
`https://t.me/${botUsername}?start=${botUsername}`;
124+
125+
const defaultBotUrl =
118126
environment === 'production'
119-
? 'https://telegram.me/DialectLabsBot'
120-
: 'https://telegram.me/DialectLabsDevBot';
127+
? buildBotUrl('DialectLabsBot')
128+
: buildBotUrl('DialectLabsDevBot');
129+
130+
const botURL = useMemo(() => {
131+
if (!dappAddress) {
132+
return defaultBotUrl;
133+
}
134+
const dapp = dapps[dappAddress.toBase58()];
135+
if (!dapp) {
136+
return defaultBotUrl;
137+
}
138+
return buildBotUrl(dapp.telegramUsername);
139+
}, [dappAddress, dapps, defaultBotUrl]);
121140

122141
const isUserEditing =
123142
telegramAddress?.value !== telegramUsername && isTelegramSaved;
@@ -148,8 +167,8 @@ const Telegram = () => {
148167
{' '}
149168
Get verification code by starting{' '}
150169
</span>
151-
<span className="dt-underline">this bot </span>
152-
<span className="dt-opacity-50">with command: /start</span>
170+
<span className="dt-underline">this bot</span>
171+
<span className="dt-opacity-50"> with command: /start </span>
153172
</a>
154173
<span
155174
onClick={deleteTelegram}

yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1403,10 +1403,10 @@
14031403
dependencies:
14041404
"@bonfida/spl-name-service" "^0.1.49"
14051405

1406-
"@dialectlabs/sdk@0.7.1":
1407-
version "0.7.1"
1408-
resolved "https://registry.yarnpkg.com/@dialectlabs/sdk/-/sdk-0.7.1.tgz#f87fdd7e731f26771c4a41a0bb0d7630b760891c"
1409-
integrity sha512-AEaVm8jHjJODf6hbVOBqFlwBOTEDlJ3cJjJXv3TVCINSkrcgwUXRu/Wc+h5FSj5w+0gmxy58hfun6DeHMa2Xzg==
1406+
"@dialectlabs/sdk@0.8.0":
1407+
version "0.8.0"
1408+
resolved "https://registry.yarnpkg.com/@dialectlabs/sdk/-/sdk-0.8.0.tgz#13a7be13d827b604e7715528716e657f4b889175"
1409+
integrity sha512-1E/eKLnwc9HPfXVUI2Xa1RJrkj2ID9yA0VHwml2TtMK1xwbpluIfLS864A9jcuXhLY9TVncK2YC1tvqiliArxQ==
14101410
dependencies:
14111411
"@dialectlabs/web3" "^0.3.2"
14121412
"@project-serum/anchor" "0.23.0"

0 commit comments

Comments
 (0)