@oxy.so/services 4.0.6 → 4.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/lib/commonjs/ui/components/FollowButton.js +26 -1
  2. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  3. package/lib/commonjs/ui/components/FollowTargetButton.js +6 -1
  4. package/lib/commonjs/ui/components/FollowTargetButton.js.map +1 -1
  5. package/lib/commonjs/ui/components/followButtonAccessibility.js +72 -0
  6. package/lib/commonjs/ui/components/followButtonAccessibility.js.map +1 -0
  7. package/lib/module/ui/components/FollowButton.js +26 -1
  8. package/lib/module/ui/components/FollowButton.js.map +1 -1
  9. package/lib/module/ui/components/FollowTargetButton.js +6 -1
  10. package/lib/module/ui/components/FollowTargetButton.js.map +1 -1
  11. package/lib/module/ui/components/followButtonAccessibility.js +66 -0
  12. package/lib/module/ui/components/followButtonAccessibility.js.map +1 -0
  13. package/lib/typescript/commonjs/ui/components/FollowButton.d.ts +6 -0
  14. package/lib/typescript/commonjs/ui/components/FollowButton.d.ts.map +1 -1
  15. package/lib/typescript/commonjs/ui/components/FollowTargetButton.d.ts.map +1 -1
  16. package/lib/typescript/commonjs/ui/components/followButtonAccessibility.d.ts +48 -0
  17. package/lib/typescript/commonjs/ui/components/followButtonAccessibility.d.ts.map +1 -0
  18. package/lib/typescript/module/ui/components/FollowButton.d.ts +6 -0
  19. package/lib/typescript/module/ui/components/FollowButton.d.ts.map +1 -1
  20. package/lib/typescript/module/ui/components/FollowTargetButton.d.ts.map +1 -1
  21. package/lib/typescript/module/ui/components/followButtonAccessibility.d.ts +48 -0
  22. package/lib/typescript/module/ui/components/followButtonAccessibility.d.ts.map +1 -0
  23. package/package.json +4 -4
  24. package/src/ui/components/FollowButton.tsx +25 -0
  25. package/src/ui/components/FollowTargetButton.tsx +4 -0
  26. package/src/ui/components/__tests__/followButtonAccessibility.test.tsx +191 -0
  27. package/src/ui/components/followButtonAccessibility.ts +83 -0
@@ -11,6 +11,7 @@ var _mediaHeader = require("@oxy.so/bloom/media-header");
11
11
  var _useFollow = require("../hooks/useFollow.js");
12
12
  var _followStore = require("../stores/followStore.js");
13
13
  var _shallow = require("zustand/react/shallow");
14
+ var _followButtonAccessibility = require("./followButtonAccessibility.js");
14
15
  var _jsxRuntime = require("react/jsx-runtime");
15
16
  const DEFAULT_FOLLOW_ALL_LABEL = 'Follow all';
16
17
  const DEFAULT_FOLLOWED_ALL_LABEL = 'Following';
@@ -31,6 +32,7 @@ const FollowButtonInner = /*#__PURE__*/(0, _react.memo)(function FollowButtonInn
31
32
  userId,
32
33
  oxyServices,
33
34
  initiallyFollowing,
35
+ username,
34
36
  size = 'medium',
35
37
  onFollowChange,
36
38
  style,
@@ -75,6 +77,15 @@ const FollowButtonInner = /*#__PURE__*/(0, _react.memo)(function FollowButtonInn
75
77
  const isBusy = isLoading || !isKnown;
76
78
  const showFollowing = isKnown && isFollowing;
77
79
  const showSpinner = showLoadingState && isBusy;
80
+ const {
81
+ accessibilityLabel,
82
+ accessibilityHint
83
+ } = (0, _followButtonAccessibility.describeFollowButton)({
84
+ isKnown,
85
+ isFollowing: showFollowing,
86
+ isPending: isLoading,
87
+ username
88
+ });
78
89
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_mediaHeader.FollowButton, {
79
90
  following: showFollowing,
80
91
  onFollowChange: () => {
@@ -85,7 +96,9 @@ const FollowButtonInner = /*#__PURE__*/(0, _react.memo)(function FollowButtonInn
85
96
  disabled: disabled || isBusy,
86
97
  style: style,
87
98
  textStyle: textStyle,
88
- label: isKnown || showSpinner ? 'Follow' : ''
99
+ label: isKnown || showSpinner ? 'Follow' : '',
100
+ accessibilityLabel: accessibilityLabel,
101
+ accessibilityHint: accessibilityHint
89
102
  });
90
103
  });
91
104
  const FollowButtonMultiInner = /*#__PURE__*/(0, _react.memo)(function FollowButtonMultiInner({
@@ -179,8 +192,20 @@ const FollowButtonMultiInner = /*#__PURE__*/(0, _react.memo)(function FollowButt
179
192
  }
180
193
  }, [disabled, isLoading, allFollowing, followAllUsers, unfollowAllUsers, onFollowChange, onBulkFollow, onBulkUnfollow, preventParentActions]);
181
194
  const showSpinner = showLoadingState && isLoading;
195
+ const {
196
+ accessibilityLabel,
197
+ accessibilityHint
198
+ } = (0, _followButtonAccessibility.describeFollowAllButton)({
199
+ allFollowing,
200
+ isPending: Boolean(isLoading),
201
+ count: userIds.length,
202
+ followAllLabel,
203
+ followedAllLabel
204
+ });
182
205
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_mediaHeader.FollowButton, {
183
206
  following: allFollowing,
207
+ accessibilityLabel: accessibilityLabel,
208
+ accessibilityHint: accessibilityHint,
184
209
  onFollowChange: () => {
185
210
  void handlePress();
186
211
  },
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_OxyContext","_toast","_mediaHeader","_useFollow","_followStore","_shallow","_jsxRuntime","DEFAULT_FOLLOW_ALL_LABEL","DEFAULT_FOLLOWED_ALL_LABEL","isMultiMode","props","Array","isArray","userIds","FollowButtonInner","memo","userId","oxyServices","initiallyFollowing","size","onFollowChange","style","textStyle","disabled","showLoadingState","preventParentActions","isFollowing","isKnown","isLoading","toggleFollow","resolveStatus","useFollowForButton","handlePress","useCallback","event","preventDefault","stopPropagation","accepted","err","error","Error","String","toast","message","useEffect","isBusy","showFollowing","showSpinner","jsx","FollowButton","following","loading","label","FollowButtonMultiInner","initiallyAllFollowing","followAllLabel","followedAllLabel","onBulkFollow","onBulkUnfollow","follow","useFollow","followAllUsers","undefined","unfollowAllUsers","isAnyLoading","initialFollowStatuses","useFollowStore","useShallow","state","statuses","uid","Object","prototype","hasOwnProperty","call","followingUsers","hasKnownNotFollowing","some","storeAllFollowing","allFollowing","fetchAllStatuses","isSubmitting","setIsSubmitting","useState","result","allAlreadyFollowing","followedCount","results","length","every","entry","alreadyFollowing","anyFollowed","success","followingLabel","canUsePrivateApi","user","currentUser","useOxy","currentUserId","id","trim","rawUserIds","multiUserIds","useMemo","seen","Set","cleaned","raw","has","add","push","targetUserId","exports","_default","default"],"sourceRoot":"../../../../src","sources":["ui/components/FollowButton.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_OxyContext","_toast","_mediaHeader","_useFollow","_followStore","_shallow","_followButtonAccessibility","_jsxRuntime","DEFAULT_FOLLOW_ALL_LABEL","DEFAULT_FOLLOWED_ALL_LABEL","isMultiMode","props","Array","isArray","userIds","FollowButtonInner","memo","userId","oxyServices","initiallyFollowing","username","size","onFollowChange","style","textStyle","disabled","showLoadingState","preventParentActions","isFollowing","isKnown","isLoading","toggleFollow","resolveStatus","useFollowForButton","handlePress","useCallback","event","preventDefault","stopPropagation","accepted","err","error","Error","String","toast","message","useEffect","isBusy","showFollowing","showSpinner","accessibilityLabel","accessibilityHint","describeFollowButton","isPending","jsx","FollowButton","following","loading","label","FollowButtonMultiInner","initiallyAllFollowing","followAllLabel","followedAllLabel","onBulkFollow","onBulkUnfollow","follow","useFollow","followAllUsers","undefined","unfollowAllUsers","isAnyLoading","initialFollowStatuses","useFollowStore","useShallow","state","statuses","uid","Object","prototype","hasOwnProperty","call","followingUsers","hasKnownNotFollowing","some","storeAllFollowing","allFollowing","fetchAllStatuses","isSubmitting","setIsSubmitting","useState","result","allAlreadyFollowing","followedCount","results","length","every","entry","alreadyFollowing","anyFollowed","success","describeFollowAllButton","Boolean","count","followingLabel","canUsePrivateApi","user","currentUser","useOxy","currentUserId","id","trim","rawUserIds","multiUserIds","useMemo","seen","Set","cleaned","raw","has","add","push","targetUserId","exports","_default","default"],"sourceRoot":"../../../../src","sources":["ui/components/FollowButton.tsx"],"mappings":"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","ignoreList":[]}
@@ -309,7 +309,12 @@ const FollowTargetButton = exports.FollowTargetButton = /*#__PURE__*/(0, _react.
309
309
  const primary = /*#__PURE__*/(0, _jsxRuntime.jsx)(_mediaHeader.FollowButton, {
310
310
  following: isFollowing,
311
311
  label: isFollowing ? text.idle : label,
312
- followingLabel: label,
312
+ followingLabel: label
313
+ // The visible text says Following / Requested / Off here, but Bloom
314
+ // names the button by its idle label in every state. Name it by the
315
+ // state it shows (OxyHQ/oxy#1375 item 22).
316
+ ,
317
+ accessibilityLabel: label,
313
318
  size: size,
314
319
  disabled: disabled || isUnknown,
315
320
  loading: isPending || isUnknown,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_mediaHeader","_button","_RiArrowDownSLine","_dropdownMenu","_toast","_useFollowTarget","_followTargetStore","_jsxRuntime","VERB_LABELS","follow","idle","active","pending","disabled","subscribe","join","watch","HOUR","DEFAULT_DURATIONS","label","seconds","FOLLOW_ACTION_LEAVES_ACTIVE","exports","unfollow","resolveFollowPrimaryAction","input","isFollowing","applicationMode","buildFollowMenuItems","items","following","durations","d","push","key","idleVerb","toLowerCase","action","type","durationLabel","hasRelationship","isPending","applicationName","FollowTargetButton","memo","targetId","verb","labels","size","style","showOptions","initialStatus","onChange","status","isUnknown","disableHere","enableHere","useFollowTarget","reportMutationFailure","useCallback","message","useFollowTargetStore","getState","errors","toast","error","text","useMemo","globalState","handlePrimary","handleTimed","expiresIn","success","menuItems","Boolean","relationshipId","runItem","item","then","ok","primary","jsx","FollowButton","followingLabel","loading","onFollowChange","length","View","children","jsxs","flexDirection","alignItems","gap","DropdownMenu","DropdownMenuTrigger","asChild","Button","appearance","tone","icon","RiArrowDownSLine","width","accessibilityLabel","accessibilityHint","DropdownMenuContent","map","DropdownMenuItem","onPress"],"sourceRoot":"../../../../src","sources":["ui/components/FollowTargetButton.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_mediaHeader","_button","_RiArrowDownSLine","_dropdownMenu","_toast","_useFollowTarget","_followTargetStore","_jsxRuntime","VERB_LABELS","follow","idle","active","pending","disabled","subscribe","join","watch","HOUR","DEFAULT_DURATIONS","label","seconds","FOLLOW_ACTION_LEAVES_ACTIVE","exports","unfollow","resolveFollowPrimaryAction","input","isFollowing","applicationMode","buildFollowMenuItems","items","following","durations","d","push","key","idleVerb","toLowerCase","action","type","durationLabel","hasRelationship","isPending","applicationName","FollowTargetButton","memo","targetId","verb","labels","size","style","showOptions","initialStatus","onChange","status","isUnknown","disableHere","enableHere","useFollowTarget","reportMutationFailure","useCallback","message","useFollowTargetStore","getState","errors","toast","error","text","useMemo","globalState","handlePrimary","handleTimed","expiresIn","success","menuItems","Boolean","relationshipId","runItem","item","then","ok","primary","jsx","FollowButton","followingLabel","accessibilityLabel","loading","onFollowChange","length","View","children","jsxs","flexDirection","alignItems","gap","DropdownMenu","DropdownMenuTrigger","asChild","Button","appearance","tone","icon","RiArrowDownSLine","width","accessibilityHint","DropdownMenuContent","map","DropdownMenuItem","onPress"],"sourceRoot":"../../../../src","sources":["ui/components/FollowTargetButton.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.describeFollowAllButton = describeFollowAllButton;
7
+ exports.describeFollowButton = describeFollowButton;
8
+ exports.formatHandle = formatHandle;
9
+ /**
10
+ * What a screen reader hears for a follow button.
11
+ *
12
+ * Bloom's `FollowButton` names itself "Follow" in both states and carries the
13
+ * state in its pressed flag. Android TalkBack reads that flag as "selected",
14
+ * so a button that SHOWS "Following" was announced as "Follow, selected", and a
15
+ * TalkBack user could not tell they already follow the account
16
+ * (OxyHQ/oxy#1375 item 22). The name now says the state, and who it is for
17
+ * when the caller knows the handle.
18
+ *
19
+ * Pure, and kept apart from the components, so every state is pinned by a
20
+ * table test rather than by a render that can only see one state at a time.
21
+ */
22
+
23
+ /** `@nate` from `nate` or `@nate`; `undefined` when there is no handle. */
24
+ function formatHandle(username) {
25
+ const bare = username?.trim().replace(/^@+/, '');
26
+ return bare ? `@${bare}` : undefined;
27
+ }
28
+
29
+ /**
30
+ * The single-user button.
31
+ *
32
+ * - `isKnown: false`: the status is still being fetched and the button is
33
+ * inert, so it says so rather than offering a "Follow" it would ignore.
34
+ * - `isPending`: a follow or unfollow is in flight. The name keeps the state
35
+ * the button still shows; the busy flag says the rest, and there is no hint
36
+ * because a press does nothing until the write settles.
37
+ * - Following: "Following @nate", hinted "Unfollows @nate", because pressing
38
+ * it unfollows, which the visible "Following" does not say.
39
+ */
40
+ function describeFollowButton(input) {
41
+ const handle = formatHandle(input.username);
42
+ if (!input.isKnown) {
43
+ return {
44
+ accessibilityLabel: handle ? `Checking whether you follow ${handle}` : 'Checking follow status'
45
+ };
46
+ }
47
+ const accessibilityLabel = input.isFollowing ? handle ? `Following ${handle}` : 'Following' : handle ? `Follow ${handle}` : 'Follow';
48
+ if (input.isPending || !input.isFollowing) return {
49
+ accessibilityLabel
50
+ };
51
+ return {
52
+ accessibilityLabel,
53
+ accessibilityHint: handle ? `Unfollows ${handle}` : 'Unfollows this account'
54
+ };
55
+ }
56
+
57
+ /**
58
+ * The "Follow all" button. The labels are the caller's, since a starter pack
59
+ * and a feed's member list word it differently; the hint carries the count.
60
+ */
61
+ function describeFollowAllButton(input) {
62
+ const accessibilityLabel = input.allFollowing ? input.followedAllLabel : input.followAllLabel;
63
+ if (input.isPending) return {
64
+ accessibilityLabel
65
+ };
66
+ const accounts = input.count === 1 ? '1 account' : `${input.count} accounts`;
67
+ return {
68
+ accessibilityLabel,
69
+ accessibilityHint: input.allFollowing ? `Unfollows all ${accounts}` : `Follows all ${accounts}`
70
+ };
71
+ }
72
+ //# sourceMappingURL=followButtonAccessibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["formatHandle","username","bare","trim","replace","undefined","describeFollowButton","input","handle","isKnown","accessibilityLabel","isFollowing","isPending","accessibilityHint","describeFollowAllButton","allFollowing","followedAllLabel","followAllLabel","accounts","count"],"sourceRoot":"../../../../src","sources":["ui/components/followButtonAccessibility.ts"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACO,SAASA,YAAYA,CAACC,QAA4B,EAAsB;EAC7E,MAAMC,IAAI,GAAGD,QAAQ,EAAEE,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;EAChD,OAAOF,IAAI,GAAG,IAAIA,IAAI,EAAE,GAAGG,SAAS;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,oBAAoBA,CAACC,KAKpC,EAA6B;EAC5B,MAAMC,MAAM,GAAGR,YAAY,CAACO,KAAK,CAACN,QAAQ,CAAC;EAE3C,IAAI,CAACM,KAAK,CAACE,OAAO,EAAE;IAClB,OAAO;MACLC,kBAAkB,EAAEF,MAAM,GACtB,+BAA+BA,MAAM,EAAE,GACvC;IACN,CAAC;EACH;EAEA,MAAME,kBAAkB,GAAGH,KAAK,CAACI,WAAW,GACxCH,MAAM,GAAG,aAAaA,MAAM,EAAE,GAAG,WAAW,GAC5CA,MAAM,GAAG,UAAUA,MAAM,EAAE,GAAG,QAAQ;EAE1C,IAAID,KAAK,CAACK,SAAS,IAAI,CAACL,KAAK,CAACI,WAAW,EAAE,OAAO;IAAED;EAAmB,CAAC;EAExE,OAAO;IACLA,kBAAkB;IAClBG,iBAAiB,EAAEL,MAAM,GAAG,aAAaA,MAAM,EAAE,GAAG;EACtD,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACO,SAASM,uBAAuBA,CAACP,KAMvC,EAA6B;EAC5B,MAAMG,kBAAkB,GAAGH,KAAK,CAACQ,YAAY,GAAGR,KAAK,CAACS,gBAAgB,GAAGT,KAAK,CAACU,cAAc;EAC7F,IAAIV,KAAK,CAACK,SAAS,EAAE,OAAO;IAAEF;EAAmB,CAAC;EAClD,MAAMQ,QAAQ,GAAGX,KAAK,CAACY,KAAK,KAAK,CAAC,GAAG,WAAW,GAAG,GAAGZ,KAAK,CAACY,KAAK,WAAW;EAC5E,OAAO;IACLT,kBAAkB;IAClBG,iBAAiB,EAAEN,KAAK,CAACQ,YAAY,GAAG,iBAAiBG,QAAQ,EAAE,GAAG,eAAeA,QAAQ;EAC/F,CAAC;AACH","ignoreList":[]}
@@ -7,6 +7,7 @@ import { FollowButton as BloomFollowButton } from '@oxy.so/bloom/media-header';
7
7
  import { useFollow, useFollowForButton } from "../hooks/useFollow.js";
8
8
  import { useFollowStore } from "../stores/followStore.js";
9
9
  import { useShallow } from 'zustand/react/shallow';
10
+ import { describeFollowAllButton, describeFollowButton } from "./followButtonAccessibility.js";
10
11
  import { jsx as _jsx } from "react/jsx-runtime";
11
12
  const DEFAULT_FOLLOW_ALL_LABEL = 'Follow all';
12
13
  const DEFAULT_FOLLOWED_ALL_LABEL = 'Following';
@@ -27,6 +28,7 @@ const FollowButtonInner = /*#__PURE__*/memo(function FollowButtonInner({
27
28
  userId,
28
29
  oxyServices,
29
30
  initiallyFollowing,
31
+ username,
30
32
  size = 'medium',
31
33
  onFollowChange,
32
34
  style,
@@ -71,6 +73,15 @@ const FollowButtonInner = /*#__PURE__*/memo(function FollowButtonInner({
71
73
  const isBusy = isLoading || !isKnown;
72
74
  const showFollowing = isKnown && isFollowing;
73
75
  const showSpinner = showLoadingState && isBusy;
76
+ const {
77
+ accessibilityLabel,
78
+ accessibilityHint
79
+ } = describeFollowButton({
80
+ isKnown,
81
+ isFollowing: showFollowing,
82
+ isPending: isLoading,
83
+ username
84
+ });
74
85
  return /*#__PURE__*/_jsx(BloomFollowButton, {
75
86
  following: showFollowing,
76
87
  onFollowChange: () => {
@@ -81,7 +92,9 @@ const FollowButtonInner = /*#__PURE__*/memo(function FollowButtonInner({
81
92
  disabled: disabled || isBusy,
82
93
  style: style,
83
94
  textStyle: textStyle,
84
- label: isKnown || showSpinner ? 'Follow' : ''
95
+ label: isKnown || showSpinner ? 'Follow' : '',
96
+ accessibilityLabel: accessibilityLabel,
97
+ accessibilityHint: accessibilityHint
85
98
  });
86
99
  });
87
100
  const FollowButtonMultiInner = /*#__PURE__*/memo(function FollowButtonMultiInner({
@@ -175,8 +188,20 @@ const FollowButtonMultiInner = /*#__PURE__*/memo(function FollowButtonMultiInner
175
188
  }
176
189
  }, [disabled, isLoading, allFollowing, followAllUsers, unfollowAllUsers, onFollowChange, onBulkFollow, onBulkUnfollow, preventParentActions]);
177
190
  const showSpinner = showLoadingState && isLoading;
191
+ const {
192
+ accessibilityLabel,
193
+ accessibilityHint
194
+ } = describeFollowAllButton({
195
+ allFollowing,
196
+ isPending: Boolean(isLoading),
197
+ count: userIds.length,
198
+ followAllLabel,
199
+ followedAllLabel
200
+ });
178
201
  return /*#__PURE__*/_jsx(BloomFollowButton, {
179
202
  following: allFollowing,
203
+ accessibilityLabel: accessibilityLabel,
204
+ accessibilityHint: accessibilityHint,
180
205
  onFollowChange: () => {
181
206
  void handlePress();
182
207
  },
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useCallback","useMemo","useState","memo","useOxy","toast","FollowButton","BloomFollowButton","useFollow","useFollowForButton","useFollowStore","useShallow","jsx","_jsx","DEFAULT_FOLLOW_ALL_LABEL","DEFAULT_FOLLOWED_ALL_LABEL","isMultiMode","props","Array","isArray","userIds","FollowButtonInner","userId","oxyServices","initiallyFollowing","size","onFollowChange","style","textStyle","disabled","showLoadingState","preventParentActions","isFollowing","isKnown","isLoading","toggleFollow","resolveStatus","handlePress","event","preventDefault","stopPropagation","accepted","err","error","Error","String","message","isBusy","showFollowing","showSpinner","following","loading","label","FollowButtonMultiInner","initiallyAllFollowing","followAllLabel","followedAllLabel","onBulkFollow","onBulkUnfollow","follow","followAllUsers","undefined","unfollowAllUsers","isAnyLoading","initialFollowStatuses","state","statuses","uid","Object","prototype","hasOwnProperty","call","followingUsers","hasKnownNotFollowing","some","storeAllFollowing","allFollowing","fetchAllStatuses","isSubmitting","setIsSubmitting","result","allAlreadyFollowing","followedCount","results","length","every","entry","alreadyFollowing","anyFollowed","success","followingLabel","canUsePrivateApi","user","currentUser","currentUserId","id","trim","rawUserIds","multiUserIds","seen","Set","cleaned","raw","has","add","push","targetUserId"],"sourceRoot":"../../../../src","sources":["ui/components/FollowButton.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useCallback","useMemo","useState","memo","useOxy","toast","FollowButton","BloomFollowButton","useFollow","useFollowForButton","useFollowStore","useShallow","describeFollowAllButton","describeFollowButton","jsx","_jsx","DEFAULT_FOLLOW_ALL_LABEL","DEFAULT_FOLLOWED_ALL_LABEL","isMultiMode","props","Array","isArray","userIds","FollowButtonInner","userId","oxyServices","initiallyFollowing","username","size","onFollowChange","style","textStyle","disabled","showLoadingState","preventParentActions","isFollowing","isKnown","isLoading","toggleFollow","resolveStatus","handlePress","event","preventDefault","stopPropagation","accepted","err","error","Error","String","message","isBusy","showFollowing","showSpinner","accessibilityLabel","accessibilityHint","isPending","following","loading","label","FollowButtonMultiInner","initiallyAllFollowing","followAllLabel","followedAllLabel","onBulkFollow","onBulkUnfollow","follow","followAllUsers","undefined","unfollowAllUsers","isAnyLoading","initialFollowStatuses","state","statuses","uid","Object","prototype","hasOwnProperty","call","followingUsers","hasKnownNotFollowing","some","storeAllFollowing","allFollowing","fetchAllStatuses","isSubmitting","setIsSubmitting","result","allAlreadyFollowing","followedCount","results","length","every","entry","alreadyFollowing","anyFollowed","success","Boolean","count","followingLabel","canUsePrivateApi","user","currentUser","currentUserId","id","trim","rawUserIds","multiUserIds","seen","Set","cleaned","raw","has","add","push","targetUserId"],"sourceRoot":"../../../../src","sources":["ui/components/FollowButton.tsx"],"mappings":"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","ignoreList":[]}
@@ -302,7 +302,12 @@ export const FollowTargetButton = /*#__PURE__*/memo(function FollowTargetButton(
302
302
  const primary = /*#__PURE__*/_jsx(BloomFollowButton, {
303
303
  following: isFollowing,
304
304
  label: isFollowing ? text.idle : label,
305
- followingLabel: label,
305
+ followingLabel: label
306
+ // The visible text says Following / Requested / Off here, but Bloom
307
+ // names the button by its idle label in every state. Name it by the
308
+ // state it shows (OxyHQ/oxy#1375 item 22).
309
+ ,
310
+ accessibilityLabel: label,
306
311
  size: size,
307
312
  disabled: disabled || isUnknown,
308
313
  loading: isPending || isUnknown,
@@ -1 +1 @@
1
- {"version":3,"names":["memo","useCallback","useMemo","View","FollowButton","BloomFollowButton","Button","RiArrowDownSLine","ChevronDown","DropdownMenu","DropdownMenuContent","DropdownMenuItem","DropdownMenuTrigger","toast","useFollowTarget","useFollowTargetStore","jsx","_jsx","jsxs","_jsxs","VERB_LABELS","follow","idle","active","pending","disabled","subscribe","join","watch","HOUR","DEFAULT_DURATIONS","label","seconds","FOLLOW_ACTION_LEAVES_ACTIVE","unfollow","resolveFollowPrimaryAction","input","isFollowing","applicationMode","buildFollowMenuItems","items","following","durations","d","push","key","idleVerb","toLowerCase","action","type","durationLabel","hasRelationship","isPending","applicationName","FollowTargetButton","targetId","verb","labels","size","style","showOptions","initialStatus","onChange","status","isUnknown","disableHere","enableHere","reportMutationFailure","message","getState","errors","error","text","globalState","handlePrimary","handleTimed","expiresIn","success","menuItems","Boolean","relationshipId","runItem","item","then","ok","primary","followingLabel","loading","onFollowChange","length","children","flexDirection","alignItems","gap","asChild","appearance","tone","icon","width","accessibilityLabel","accessibilityHint","map","onPress"],"sourceRoot":"../../../../src","sources":["ui/components/FollowTargetButton.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["memo","useCallback","useMemo","View","FollowButton","BloomFollowButton","Button","RiArrowDownSLine","ChevronDown","DropdownMenu","DropdownMenuContent","DropdownMenuItem","DropdownMenuTrigger","toast","useFollowTarget","useFollowTargetStore","jsx","_jsx","jsxs","_jsxs","VERB_LABELS","follow","idle","active","pending","disabled","subscribe","join","watch","HOUR","DEFAULT_DURATIONS","label","seconds","FOLLOW_ACTION_LEAVES_ACTIVE","unfollow","resolveFollowPrimaryAction","input","isFollowing","applicationMode","buildFollowMenuItems","items","following","durations","d","push","key","idleVerb","toLowerCase","action","type","durationLabel","hasRelationship","isPending","applicationName","FollowTargetButton","targetId","verb","labels","size","style","showOptions","initialStatus","onChange","status","isUnknown","disableHere","enableHere","reportMutationFailure","message","getState","errors","error","text","globalState","handlePrimary","handleTimed","expiresIn","success","menuItems","Boolean","relationshipId","runItem","item","then","ok","primary","followingLabel","accessibilityLabel","loading","onFollowChange","length","children","flexDirection","alignItems","gap","asChild","appearance","tone","icon","width","accessibilityHint","map","onPress"],"sourceRoot":"../../../../src","sources":["ui/components/FollowTargetButton.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * What a screen reader hears for a follow button.
5
+ *
6
+ * Bloom's `FollowButton` names itself "Follow" in both states and carries the
7
+ * state in its pressed flag. Android TalkBack reads that flag as "selected",
8
+ * so a button that SHOWS "Following" was announced as "Follow, selected", and a
9
+ * TalkBack user could not tell they already follow the account
10
+ * (OxyHQ/oxy#1375 item 22). The name now says the state, and who it is for
11
+ * when the caller knows the handle.
12
+ *
13
+ * Pure, and kept apart from the components, so every state is pinned by a
14
+ * table test rather than by a render that can only see one state at a time.
15
+ */
16
+
17
+ /** `@nate` from `nate` or `@nate`; `undefined` when there is no handle. */
18
+ export function formatHandle(username) {
19
+ const bare = username?.trim().replace(/^@+/, '');
20
+ return bare ? `@${bare}` : undefined;
21
+ }
22
+
23
+ /**
24
+ * The single-user button.
25
+ *
26
+ * - `isKnown: false`: the status is still being fetched and the button is
27
+ * inert, so it says so rather than offering a "Follow" it would ignore.
28
+ * - `isPending`: a follow or unfollow is in flight. The name keeps the state
29
+ * the button still shows; the busy flag says the rest, and there is no hint
30
+ * because a press does nothing until the write settles.
31
+ * - Following: "Following @nate", hinted "Unfollows @nate", because pressing
32
+ * it unfollows, which the visible "Following" does not say.
33
+ */
34
+ export function describeFollowButton(input) {
35
+ const handle = formatHandle(input.username);
36
+ if (!input.isKnown) {
37
+ return {
38
+ accessibilityLabel: handle ? `Checking whether you follow ${handle}` : 'Checking follow status'
39
+ };
40
+ }
41
+ const accessibilityLabel = input.isFollowing ? handle ? `Following ${handle}` : 'Following' : handle ? `Follow ${handle}` : 'Follow';
42
+ if (input.isPending || !input.isFollowing) return {
43
+ accessibilityLabel
44
+ };
45
+ return {
46
+ accessibilityLabel,
47
+ accessibilityHint: handle ? `Unfollows ${handle}` : 'Unfollows this account'
48
+ };
49
+ }
50
+
51
+ /**
52
+ * The "Follow all" button. The labels are the caller's, since a starter pack
53
+ * and a feed's member list word it differently; the hint carries the count.
54
+ */
55
+ export function describeFollowAllButton(input) {
56
+ const accessibilityLabel = input.allFollowing ? input.followedAllLabel : input.followAllLabel;
57
+ if (input.isPending) return {
58
+ accessibilityLabel
59
+ };
60
+ const accounts = input.count === 1 ? '1 account' : `${input.count} accounts`;
61
+ return {
62
+ accessibilityLabel,
63
+ accessibilityHint: input.allFollowing ? `Unfollows all ${accounts}` : `Follows all ${accounts}`
64
+ };
65
+ }
66
+ //# sourceMappingURL=followButtonAccessibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["formatHandle","username","bare","trim","replace","undefined","describeFollowButton","input","handle","isKnown","accessibilityLabel","isFollowing","isPending","accessibilityHint","describeFollowAllButton","allFollowing","followedAllLabel","followAllLabel","accounts","count"],"sourceRoot":"../../../../src","sources":["ui/components/followButtonAccessibility.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA,OAAO,SAASA,YAAYA,CAACC,QAA4B,EAAsB;EAC7E,MAAMC,IAAI,GAAGD,QAAQ,EAAEE,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;EAChD,OAAOF,IAAI,GAAG,IAAIA,IAAI,EAAE,GAAGG,SAAS;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAACC,KAKpC,EAA6B;EAC5B,MAAMC,MAAM,GAAGR,YAAY,CAACO,KAAK,CAACN,QAAQ,CAAC;EAE3C,IAAI,CAACM,KAAK,CAACE,OAAO,EAAE;IAClB,OAAO;MACLC,kBAAkB,EAAEF,MAAM,GACtB,+BAA+BA,MAAM,EAAE,GACvC;IACN,CAAC;EACH;EAEA,MAAME,kBAAkB,GAAGH,KAAK,CAACI,WAAW,GACxCH,MAAM,GAAG,aAAaA,MAAM,EAAE,GAAG,WAAW,GAC5CA,MAAM,GAAG,UAAUA,MAAM,EAAE,GAAG,QAAQ;EAE1C,IAAID,KAAK,CAACK,SAAS,IAAI,CAACL,KAAK,CAACI,WAAW,EAAE,OAAO;IAAED;EAAmB,CAAC;EAExE,OAAO;IACLA,kBAAkB;IAClBG,iBAAiB,EAAEL,MAAM,GAAG,aAAaA,MAAM,EAAE,GAAG;EACtD,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASM,uBAAuBA,CAACP,KAMvC,EAA6B;EAC5B,MAAMG,kBAAkB,GAAGH,KAAK,CAACQ,YAAY,GAAGR,KAAK,CAACS,gBAAgB,GAAGT,KAAK,CAACU,cAAc;EAC7F,IAAIV,KAAK,CAACK,SAAS,EAAE,OAAO;IAAEF;EAAmB,CAAC;EAClD,MAAMQ,QAAQ,GAAGX,KAAK,CAACY,KAAK,KAAK,CAAC,GAAG,WAAW,GAAG,GAAGZ,KAAK,CAACY,KAAK,WAAW;EAC5E,OAAO;IACLT,kBAAkB;IAClBG,iBAAiB,EAAEN,KAAK,CAACQ,YAAY,GAAG,iBAAiBG,QAAQ,EAAE,GAAG,eAAeA,QAAQ;EAC/F,CAAC;AACH","ignoreList":[]}
@@ -16,6 +16,12 @@ interface FollowButtonBaseProps {
16
16
  export interface SingleFollowButtonProps extends FollowButtonBaseProps {
17
17
  userId: string;
18
18
  initiallyFollowing?: boolean;
19
+ /**
20
+ * The account's handle, with or without the `@`. A screen reader then hears
21
+ * "Following @nate" rather than a bare "Following"; omit it and the name
22
+ * still follows the state.
23
+ */
24
+ username?: string;
19
25
  userIds?: never;
20
26
  }
21
27
  /** Multi-user mode — follows MANY users in one "Follow all" action (follow-only). */
@@ -1 +1 @@
1
- {"version":3,"file":"FollowButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/FollowButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAMtB,OAAO,KAAK,EAAe,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAMtF,gEAAgE;AAChE,UAAU,qBAAqB;IAC7B,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;CACjD;AAED,yEAAyE;AACzE,MAAM,WAAW,uBAAwB,SAAQ,qBAAqB;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,qFAAqF;AACrF,MAAM,WAAW,sBAAuB,SAAQ,qBAAqB;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAClD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACtD,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,GAAG,sBAAsB,CAAC;AAgMjF,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAiD7C,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"FollowButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/FollowButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAMtB,OAAO,KAAK,EAAe,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAOtF,gEAAgE;AAChE,UAAU,qBAAqB;IAC7B,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;CACjD;AAED,yEAAyE;AACzE,MAAM,WAAW,uBAAwB,SAAQ,qBAAqB;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,qFAAqF;AACrF,MAAM,WAAW,sBAAuB,SAAQ,qBAAqB;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAClD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACtD,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,GAAG,sBAAsB,CAAC;AAkNjF,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAiD7C,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,eAAe,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"FollowTargetButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/FollowTargetButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAmBzD;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAcD,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAeD;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAC9C,QAAQ,GAAG,cAAc,GAAG,aAAa,GAAG,cAAc,GAAG,UAAU,EACvE,OAAO,CAUR,CAAC;AAEF,uCAAuC;AACvC,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,MAAM,EACF;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAChE;QAAE,IAAI,EAAE,aAAa,CAAA;KAAE,GACvB;QAAE,IAAI,EAAE,cAAc,CAAA;KAAE,GACxB;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,qBAAqB,CAAC;CACxC,GAAG,QAAQ,GAAG,UAAU,GAAG,aAAa,CAIxC;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,qBAAqB,CAAC;IACvC,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,cAAc,EAAE,CAmCnB;AAED,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IACrC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAED,eAAO,MAAM,kBAAkB,+DA8K7B,CAAC"}
1
+ {"version":3,"file":"FollowTargetButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/FollowTargetButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAmBzD;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAcD,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAeD;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAC9C,QAAQ,GAAG,cAAc,GAAG,aAAa,GAAG,cAAc,GAAG,UAAU,EACvE,OAAO,CAUR,CAAC;AAEF,uCAAuC;AACvC,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,MAAM,EACF;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAChE;QAAE,IAAI,EAAE,aAAa,CAAA;KAAE,GACvB;QAAE,IAAI,EAAE,cAAc,CAAA;KAAE,GACxB;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,qBAAqB,CAAC;CACxC,GAAG,QAAQ,GAAG,UAAU,GAAG,aAAa,CAIxC;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,qBAAqB,CAAC;IACvC,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,cAAc,EAAE,CAmCnB;AAED,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IACrC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAED,eAAO,MAAM,kBAAkB,+DAkL7B,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * What a screen reader hears for a follow button.
3
+ *
4
+ * Bloom's `FollowButton` names itself "Follow" in both states and carries the
5
+ * state in its pressed flag. Android TalkBack reads that flag as "selected",
6
+ * so a button that SHOWS "Following" was announced as "Follow, selected", and a
7
+ * TalkBack user could not tell they already follow the account
8
+ * (OxyHQ/oxy#1375 item 22). The name now says the state, and who it is for
9
+ * when the caller knows the handle.
10
+ *
11
+ * Pure, and kept apart from the components, so every state is pinned by a
12
+ * table test rather than by a render that can only see one state at a time.
13
+ */
14
+ export interface FollowButtonAccessibility {
15
+ accessibilityLabel: string;
16
+ accessibilityHint?: string;
17
+ }
18
+ /** `@nate` from `nate` or `@nate`; `undefined` when there is no handle. */
19
+ export declare function formatHandle(username: string | undefined): string | undefined;
20
+ /**
21
+ * The single-user button.
22
+ *
23
+ * - `isKnown: false`: the status is still being fetched and the button is
24
+ * inert, so it says so rather than offering a "Follow" it would ignore.
25
+ * - `isPending`: a follow or unfollow is in flight. The name keeps the state
26
+ * the button still shows; the busy flag says the rest, and there is no hint
27
+ * because a press does nothing until the write settles.
28
+ * - Following: "Following @nate", hinted "Unfollows @nate", because pressing
29
+ * it unfollows, which the visible "Following" does not say.
30
+ */
31
+ export declare function describeFollowButton(input: {
32
+ isKnown: boolean;
33
+ isFollowing: boolean;
34
+ isPending: boolean;
35
+ username?: string;
36
+ }): FollowButtonAccessibility;
37
+ /**
38
+ * The "Follow all" button. The labels are the caller's, since a starter pack
39
+ * and a feed's member list word it differently; the hint carries the count.
40
+ */
41
+ export declare function describeFollowAllButton(input: {
42
+ allFollowing: boolean;
43
+ isPending: boolean;
44
+ count: number;
45
+ followAllLabel: string;
46
+ followedAllLabel: string;
47
+ }): FollowButtonAccessibility;
48
+ //# sourceMappingURL=followButtonAccessibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"followButtonAccessibility.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/followButtonAccessibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,yBAAyB;IACxC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG7E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,yBAAyB,CAqB5B;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,yBAAyB,CAQ5B"}
@@ -16,6 +16,12 @@ interface FollowButtonBaseProps {
16
16
  export interface SingleFollowButtonProps extends FollowButtonBaseProps {
17
17
  userId: string;
18
18
  initiallyFollowing?: boolean;
19
+ /**
20
+ * The account's handle, with or without the `@`. A screen reader then hears
21
+ * "Following @nate" rather than a bare "Following"; omit it and the name
22
+ * still follows the state.
23
+ */
24
+ username?: string;
19
25
  userIds?: never;
20
26
  }
21
27
  /** Multi-user mode — follows MANY users in one "Follow all" action (follow-only). */
@@ -1 +1 @@
1
- {"version":3,"file":"FollowButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/FollowButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAMtB,OAAO,KAAK,EAAe,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAMtF,gEAAgE;AAChE,UAAU,qBAAqB;IAC7B,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;CACjD;AAED,yEAAyE;AACzE,MAAM,WAAW,uBAAwB,SAAQ,qBAAqB;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,qFAAqF;AACrF,MAAM,WAAW,sBAAuB,SAAQ,qBAAqB;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAClD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACtD,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,GAAG,sBAAsB,CAAC;AAgMjF,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAiD7C,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"FollowButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/FollowButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAMtB,OAAO,KAAK,EAAe,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAOtF,gEAAgE;AAChE,UAAU,qBAAqB;IAC7B,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;CACjD;AAED,yEAAyE;AACzE,MAAM,WAAW,uBAAwB,SAAQ,qBAAqB;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,qFAAqF;AACrF,MAAM,WAAW,sBAAuB,SAAQ,qBAAqB;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAClD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACtD,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,GAAG,sBAAsB,CAAC;AAkNjF,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAiD7C,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,eAAe,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"FollowTargetButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/FollowTargetButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAmBzD;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAcD,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAeD;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAC9C,QAAQ,GAAG,cAAc,GAAG,aAAa,GAAG,cAAc,GAAG,UAAU,EACvE,OAAO,CAUR,CAAC;AAEF,uCAAuC;AACvC,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,MAAM,EACF;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAChE;QAAE,IAAI,EAAE,aAAa,CAAA;KAAE,GACvB;QAAE,IAAI,EAAE,cAAc,CAAA;KAAE,GACxB;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,qBAAqB,CAAC;CACxC,GAAG,QAAQ,GAAG,UAAU,GAAG,aAAa,CAIxC;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,qBAAqB,CAAC;IACvC,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,cAAc,EAAE,CAmCnB;AAED,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IACrC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAED,eAAO,MAAM,kBAAkB,+DA8K7B,CAAC"}
1
+ {"version":3,"file":"FollowTargetButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/FollowTargetButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAmBzD;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAcD,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAeD;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAC9C,QAAQ,GAAG,cAAc,GAAG,aAAa,GAAG,cAAc,GAAG,UAAU,EACvE,OAAO,CAUR,CAAC;AAEF,uCAAuC;AACvC,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,MAAM,EACF;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAChE;QAAE,IAAI,EAAE,aAAa,CAAA;KAAE,GACvB;QAAE,IAAI,EAAE,cAAc,CAAA;KAAE,GACxB;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,qBAAqB,CAAC;CACxC,GAAG,QAAQ,GAAG,UAAU,GAAG,aAAa,CAIxC;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,qBAAqB,CAAC;IACvC,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,cAAc,EAAE,CAmCnB;AAED,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IACrC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAED,eAAO,MAAM,kBAAkB,+DAkL7B,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * What a screen reader hears for a follow button.
3
+ *
4
+ * Bloom's `FollowButton` names itself "Follow" in both states and carries the
5
+ * state in its pressed flag. Android TalkBack reads that flag as "selected",
6
+ * so a button that SHOWS "Following" was announced as "Follow, selected", and a
7
+ * TalkBack user could not tell they already follow the account
8
+ * (OxyHQ/oxy#1375 item 22). The name now says the state, and who it is for
9
+ * when the caller knows the handle.
10
+ *
11
+ * Pure, and kept apart from the components, so every state is pinned by a
12
+ * table test rather than by a render that can only see one state at a time.
13
+ */
14
+ export interface FollowButtonAccessibility {
15
+ accessibilityLabel: string;
16
+ accessibilityHint?: string;
17
+ }
18
+ /** `@nate` from `nate` or `@nate`; `undefined` when there is no handle. */
19
+ export declare function formatHandle(username: string | undefined): string | undefined;
20
+ /**
21
+ * The single-user button.
22
+ *
23
+ * - `isKnown: false`: the status is still being fetched and the button is
24
+ * inert, so it says so rather than offering a "Follow" it would ignore.
25
+ * - `isPending`: a follow or unfollow is in flight. The name keeps the state
26
+ * the button still shows; the busy flag says the rest, and there is no hint
27
+ * because a press does nothing until the write settles.
28
+ * - Following: "Following @nate", hinted "Unfollows @nate", because pressing
29
+ * it unfollows, which the visible "Following" does not say.
30
+ */
31
+ export declare function describeFollowButton(input: {
32
+ isKnown: boolean;
33
+ isFollowing: boolean;
34
+ isPending: boolean;
35
+ username?: string;
36
+ }): FollowButtonAccessibility;
37
+ /**
38
+ * The "Follow all" button. The labels are the caller's, since a starter pack
39
+ * and a feed's member list word it differently; the hint carries the count.
40
+ */
41
+ export declare function describeFollowAllButton(input: {
42
+ allFollowing: boolean;
43
+ isPending: boolean;
44
+ count: number;
45
+ followAllLabel: string;
46
+ followedAllLabel: string;
47
+ }): FollowButtonAccessibility;
48
+ //# sourceMappingURL=followButtonAccessibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"followButtonAccessibility.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/followButtonAccessibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,yBAAyB;IACxC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG7E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,yBAAyB,CAqB5B;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,yBAAyB,CAQ5B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxy.so/services",
3
- "version": "4.0.6",
3
+ "version": "4.0.7",
4
4
  "description": "OxyHQ Expo/React Native SDK — UI components, screens, and native features",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -164,7 +164,7 @@
164
164
  "@commitlint/cli": "^21.2.1",
165
165
  "@commitlint/config-conventional": "^21.2.0",
166
166
  "@expo/vector-icons": "^15.0.3",
167
- "@oxy.so/core": "1.13.0",
167
+ "@oxy.so/core": "1.12.1",
168
168
  "@react-native-async-storage/async-storage": "^2.0.0",
169
169
  "@react-native-community/netinfo": "^12.0.1",
170
170
  "@react-native/babel-preset": "^0.86.2",
@@ -179,7 +179,7 @@
179
179
  "@types/jest": "^30.0.0",
180
180
  "@types/node": "^20.19.43",
181
181
  "@types/react": "*",
182
- "@oxy.so/bloom": "^4.21.1",
182
+ "@oxy.so/bloom": "^4.26.0",
183
183
  "copyfiles": "^2.4.1",
184
184
  "expo-constants": "~57.0.5",
185
185
  "expo-file-system": "~57.0.1",
@@ -215,7 +215,7 @@
215
215
  "//@oxy.so/bloom": "RE-RAISE THIS FLOOR ON EVERY BREAKING BLOOM RELEASE, in the same commit as the root package.json catalog entry and the code that requires it. The breaking position is the MAJOR, so `^3.0.1` means `>=3.0.1 <4.0.0`: 3.x minors are admitted on semver's additive promise, and Bloom 4.0.0 is refused until someone raises this deliberately. The CAP is the part that is load-bearing. An earlier revision of this key recorded the opposite trade -- an uncapped `>=` floor, accepted so that intentionally-breaking Bloom 0.x minors would not be blocked -- and that trade is closed by evidence rather than by preference: an unbounded range is exactly what let `bun install` pair this package with Bloom 1.0.0 and emit no warning at all, and 1.0.0 broke it four ways (a deleted provider, a renamed confirm option, a renamed Chip fill, and two REMOVED SUBPATHS that fail at bundle time, before any typecheck runs). A floor is a claim about what was measured; a cap is the claim that nothing beyond it was. RAISED TO 3.0.1 from `^2.1.0`. Bloom 3.0.0 breaks exactly two things -- `PageHeader` defaults to `presentation=\"floating\"` and stops hiding the title under `transparent`, and `Field disabled` now reaches the control that reads the field context -- and THIS PACKAGE IMPORTS NEITHER: it renders no `PageHeader` and no `Field`, and 3.0 removes no subpath (unlike 2.0.0, which is why that floor cost code changes and this one does not). Its six `transparent` occurrences are CSS colour values, not the PageHeader prop. The cap had to move rather than widen to a union, because leaving `^2.1.0` in place is what made `bun install` resolve a SECOND, nested Bloom 2.12.4 under this package for any app on Bloom 3 -- two copies of a library whose 3.0 contracts (`control-surface`, `TopEdgeProvider`, `ScrollOffsetProvider`) are React contexts, so a provider from one copy cannot be read by a consumer from the other. Mention's `oxyRuntimeCompatibility` test is what caught it; nothing in a typecheck can. RAISED AGAIN TO 3.2.0 from `^3.0.1`, for the same class of reason the 2.x note records, only in the other direction: 3.2.0 ADDS the per-glyph icon subpaths (`@oxy.so/bloom/icons/RiAtLine`) that this package's screens now import instead of the `@oxy.so/bloom/icons` barrel, and a missing subpath fails at bundle time, in the consumer's Metro, long after this package has typechecked and shipped. `^3.0.1` would have admitted Bloom 3.0.1 and 3.1.0, neither of which has those subpaths, so the floor is the only thing standing between a consumer and a red build. Nothing else about 3.1.0 or 3.2.0 is required here; the cap stays at the major. RAISED TO ^4.2.0: FollowButton now delegates its visuals to Bloom media-header FollowButton with loading, textStyle and large size; the new shared UI contracts require one Bloom4 context across Services and its consumer.",
216
216
  "peerDependencies": {
217
217
  "@expo/vector-icons": "^15.0.3",
218
- "@oxy.so/bloom": "^4.21.1",
218
+ "@oxy.so/bloom": "^4.26.0",
219
219
  "@oxy.so/core": "^1.12.0",
220
220
  "@react-native-async-storage/async-storage": "^2.0.0",
221
221
  "@react-native-community/netinfo": ">=11.4.1",
@@ -12,6 +12,7 @@ import { useFollow, useFollowForButton } from '../hooks/useFollow';
12
12
  import { useFollowStore } from '../stores/followStore';
13
13
  import type { OxyServices, BulkFollowResult, BulkUnfollowResult } from '@oxy.so/core';
14
14
  import { useShallow } from 'zustand/react/shallow';
15
+ import { describeFollowAllButton, describeFollowButton } from './followButtonAccessibility';
15
16
 
16
17
  const DEFAULT_FOLLOW_ALL_LABEL = 'Follow all';
17
18
  const DEFAULT_FOLLOWED_ALL_LABEL = 'Following';
@@ -32,6 +33,12 @@ interface FollowButtonBaseProps {
32
33
  export interface SingleFollowButtonProps extends FollowButtonBaseProps {
33
34
  userId: string;
34
35
  initiallyFollowing?: boolean;
36
+ /**
37
+ * The account's handle, with or without the `@`. A screen reader then hears
38
+ * "Following @nate" rather than a bare "Following"; omit it and the name
39
+ * still follows the state.
40
+ */
41
+ username?: string;
35
42
  userIds?: never;
36
43
  }
37
44
 
@@ -59,6 +66,7 @@ const FollowButtonInner = memo(function FollowButtonInner({
59
66
  userId,
60
67
  oxyServices,
61
68
  initiallyFollowing,
69
+ username,
62
70
  size = 'medium',
63
71
  onFollowChange,
64
72
  style,
@@ -106,6 +114,12 @@ const FollowButtonInner = memo(function FollowButtonInner({
106
114
  const isBusy = isLoading || !isKnown;
107
115
  const showFollowing = isKnown && isFollowing;
108
116
  const showSpinner = showLoadingState && isBusy;
117
+ const { accessibilityLabel, accessibilityHint } = describeFollowButton({
118
+ isKnown,
119
+ isFollowing: showFollowing,
120
+ isPending: isLoading,
121
+ username,
122
+ });
109
123
 
110
124
  return (
111
125
  <BloomFollowButton
@@ -117,6 +131,8 @@ const FollowButtonInner = memo(function FollowButtonInner({
117
131
  style={style}
118
132
  textStyle={textStyle}
119
133
  label={isKnown || showSpinner ? 'Follow' : ''}
134
+ accessibilityLabel={accessibilityLabel}
135
+ accessibilityHint={accessibilityHint}
120
136
  />
121
137
  );
122
138
  });
@@ -226,10 +242,19 @@ const FollowButtonMultiInner = memo(function FollowButtonMultiInner({
226
242
  }, [disabled, isLoading, allFollowing, followAllUsers, unfollowAllUsers, onFollowChange, onBulkFollow, onBulkUnfollow, preventParentActions]);
227
243
 
228
244
  const showSpinner = showLoadingState && isLoading;
245
+ const { accessibilityLabel, accessibilityHint } = describeFollowAllButton({
246
+ allFollowing,
247
+ isPending: Boolean(isLoading),
248
+ count: userIds.length,
249
+ followAllLabel,
250
+ followedAllLabel,
251
+ });
229
252
 
230
253
  return (
231
254
  <BloomFollowButton
232
255
  following={allFollowing}
256
+ accessibilityLabel={accessibilityLabel}
257
+ accessibilityHint={accessibilityHint}
233
258
  onFollowChange={() => { void handlePress(); }}
234
259
  label={followAllLabel}
235
260
  followingLabel={followedAllLabel}
@@ -385,6 +385,10 @@ export const FollowTargetButton = memo(function FollowTargetButton({
385
385
  following={isFollowing}
386
386
  label={isFollowing ? text.idle : label}
387
387
  followingLabel={label}
388
+ // The visible text says Following / Requested / Off here, but Bloom
389
+ // names the button by its idle label in every state. Name it by the
390
+ // state it shows (OxyHQ/oxy#1375 item 22).
391
+ accessibilityLabel={label}
388
392
  size={size}
389
393
  disabled={disabled || isUnknown}
390
394
  loading={isPending || isUnknown}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * The follow button's accessible name follows its state (OxyHQ/oxy#1375 item
3
+ * 22). On @nate's profile the button showed "Following" while TalkBack read
4
+ * "Follow": Bloom names the button by its idle label and leaves the state to
5
+ * the pressed flag, which TalkBack reads as "selected".
6
+ *
7
+ * The table pins what each state says; the render tests pin that both
8
+ * FollowButton modes and FollowTargetButton hand it to Bloom.
9
+ */
10
+ import React from 'react';
11
+ import { render } from '@testing-library/react';
12
+ import {
13
+ describeFollowAllButton,
14
+ describeFollowButton,
15
+ formatHandle,
16
+ } from '../followButtonAccessibility';
17
+
18
+ interface BloomFollowProps {
19
+ following: boolean;
20
+ label?: string;
21
+ followingLabel?: string;
22
+ loading?: boolean;
23
+ accessibilityLabel?: string;
24
+ accessibilityHint?: string;
25
+ }
26
+ const mockBloomProps: BloomFollowProps[] = [];
27
+ const lastBloomProps = () => mockBloomProps[mockBloomProps.length - 1];
28
+
29
+ jest.mock('@oxy.so/bloom/media-header', () => ({
30
+ FollowButton: (props: BloomFollowProps) => {
31
+ mockBloomProps.push(props);
32
+ return null;
33
+ },
34
+ }));
35
+
36
+ let mockFollowState = { isFollowing: false, isKnown: true, isLoading: false };
37
+ let mockMulti = { allFollowing: false, isAnyLoading: false };
38
+ jest.mock('../../hooks/useFollow', () => ({
39
+ useFollowForButton: () => ({
40
+ ...mockFollowState,
41
+ toggleFollow: jest.fn(),
42
+ resolveStatus: jest.fn(),
43
+ }),
44
+ useFollow: () => ({
45
+ ...mockMulti,
46
+ followAllUsers: jest.fn(),
47
+ unfollowAllUsers: jest.fn(),
48
+ fetchAllStatuses: jest.fn(),
49
+ }),
50
+ }));
51
+
52
+ jest.mock('../../context/OxyContext', () => ({
53
+ useOxy: () => ({ oxyServices: {}, canUsePrivateApi: true, user: { id: 'viewer' } }),
54
+ }));
55
+
56
+ let mockTarget = {
57
+ status: { globalState: 'not_following', applicationMode: 'inherit', relationshipId: null },
58
+ isFollowing: false,
59
+ isUnknown: false,
60
+ isPending: false,
61
+ };
62
+ jest.mock('../../hooks/useFollowTarget', () => ({
63
+ useFollowTarget: () => ({
64
+ ...mockTarget,
65
+ follow: jest.fn(),
66
+ unfollow: jest.fn(),
67
+ disableHere: jest.fn(),
68
+ enableHere: jest.fn(),
69
+ }),
70
+ }));
71
+
72
+ import { FollowButton } from '../FollowButton';
73
+ import { FollowTargetButton } from '../FollowTargetButton';
74
+
75
+ describe('describeFollowButton', () => {
76
+ const known = { isKnown: true, isPending: false, username: 'nate' };
77
+
78
+ it.each([
79
+ [{ ...known, isFollowing: true }, 'Following @nate', 'Unfollows @nate'],
80
+ [{ ...known, isFollowing: false }, 'Follow @nate', undefined],
81
+ [{ ...known, isFollowing: true, isPending: true }, 'Following @nate', undefined],
82
+ [{ ...known, isFollowing: false, isPending: true }, 'Follow @nate', undefined],
83
+ [{ ...known, isKnown: false, isFollowing: false }, 'Checking whether you follow @nate', undefined],
84
+ [{ ...known, username: undefined, isFollowing: true }, 'Following', 'Unfollows this account'],
85
+ [{ ...known, username: undefined, isFollowing: false }, 'Follow', undefined],
86
+ [{ ...known, username: undefined, isKnown: false, isFollowing: false }, 'Checking follow status', undefined],
87
+ ])('%o reads "%s"', (input, label, hint) => {
88
+ expect(describeFollowButton(input)).toEqual(
89
+ hint ? { accessibilityLabel: label, accessibilityHint: hint } : { accessibilityLabel: label },
90
+ );
91
+ });
92
+
93
+ it('accepts a handle with or without the @', () => {
94
+ expect(formatHandle('@nate')).toBe('@nate');
95
+ expect(formatHandle(' nate ')).toBe('@nate');
96
+ expect(formatHandle('')).toBeUndefined();
97
+ expect(formatHandle(undefined)).toBeUndefined();
98
+ });
99
+ });
100
+
101
+ describe('describeFollowAllButton', () => {
102
+ const labels = { followAllLabel: 'Follow all', followedAllLabel: 'Following' };
103
+
104
+ it('names the state and counts the accounts in the hint', () => {
105
+ expect(describeFollowAllButton({ ...labels, allFollowing: false, isPending: false, count: 3 })).toEqual({
106
+ accessibilityLabel: 'Follow all',
107
+ accessibilityHint: 'Follows all 3 accounts',
108
+ });
109
+ expect(describeFollowAllButton({ ...labels, allFollowing: true, isPending: false, count: 1 })).toEqual({
110
+ accessibilityLabel: 'Following',
111
+ accessibilityHint: 'Unfollows all 1 account',
112
+ });
113
+ });
114
+
115
+ it('drops the hint while the bulk write is in flight', () => {
116
+ expect(describeFollowAllButton({ ...labels, allFollowing: true, isPending: true, count: 3 })).toEqual({
117
+ accessibilityLabel: 'Following',
118
+ });
119
+ });
120
+ });
121
+
122
+ describe('FollowButton hands Bloom a name that follows the state', () => {
123
+ beforeEach(() => {
124
+ mockBloomProps.length = 0;
125
+ });
126
+
127
+ it('reads "Following @nate" while it shows Following', () => {
128
+ mockFollowState = { isFollowing: true, isKnown: true, isLoading: false };
129
+ render(<FollowButton userId="nate-id" username="nate" />);
130
+ expect(lastBloomProps()).toMatchObject({
131
+ following: true,
132
+ accessibilityLabel: 'Following @nate',
133
+ accessibilityHint: 'Unfollows @nate',
134
+ });
135
+ });
136
+
137
+ it('reads "Follow @nate" while it shows Follow', () => {
138
+ mockFollowState = { isFollowing: false, isKnown: true, isLoading: false };
139
+ render(<FollowButton userId="nate-id" username="nate" />);
140
+ expect(lastBloomProps()).toMatchObject({ following: false, accessibilityLabel: 'Follow @nate' });
141
+ expect(lastBloomProps()?.accessibilityHint).toBeUndefined();
142
+ });
143
+
144
+ it('keeps the shown state while a write is pending', () => {
145
+ mockFollowState = { isFollowing: true, isKnown: true, isLoading: true };
146
+ render(<FollowButton userId="nate-id" username="nate" />);
147
+ expect(lastBloomProps()).toMatchObject({ loading: true, accessibilityLabel: 'Following @nate' });
148
+ expect(lastBloomProps()?.accessibilityHint).toBeUndefined();
149
+ });
150
+
151
+ it('says it is checking while the status is unknown', () => {
152
+ mockFollowState = { isFollowing: false, isKnown: false, isLoading: false };
153
+ render(<FollowButton userId="nate-id" username="nate" />);
154
+ expect(lastBloomProps()).toMatchObject({
155
+ loading: true,
156
+ accessibilityLabel: 'Checking whether you follow @nate',
157
+ });
158
+ });
159
+
160
+ it('names the "Follow all" button by its state too', () => {
161
+ mockMulti = { allFollowing: true, isAnyLoading: false };
162
+ render(<FollowButton userIds={['a', 'b']} />);
163
+ expect(lastBloomProps()).toMatchObject({
164
+ following: true,
165
+ accessibilityLabel: 'Following',
166
+ accessibilityHint: 'Unfollows all 2 accounts',
167
+ });
168
+ });
169
+ });
170
+
171
+ describe('FollowTargetButton names the state it shows', () => {
172
+ beforeEach(() => {
173
+ mockBloomProps.length = 0;
174
+ });
175
+
176
+ it.each([
177
+ ['following', { globalState: 'following', applicationMode: 'inherit' }, true, 'Following'],
178
+ ['requested', { globalState: 'requested', applicationMode: 'inherit' }, true, 'Requested'],
179
+ ['off here', { globalState: 'following', applicationMode: 'disabled' }, true, 'Off here'],
180
+ ['not following', { globalState: 'not_following', applicationMode: 'inherit' }, false, 'Follow'],
181
+ ])('%s', (_name, status, isFollowing, label) => {
182
+ mockTarget = {
183
+ status: { ...status, relationshipId: null },
184
+ isFollowing,
185
+ isUnknown: false,
186
+ isPending: false,
187
+ };
188
+ render(<FollowTargetButton targetId="t1" showOptions={false} />);
189
+ expect(lastBloomProps()?.accessibilityLabel).toBe(label);
190
+ });
191
+ });
@@ -0,0 +1,83 @@
1
+ /**
2
+ * What a screen reader hears for a follow button.
3
+ *
4
+ * Bloom's `FollowButton` names itself "Follow" in both states and carries the
5
+ * state in its pressed flag. Android TalkBack reads that flag as "selected",
6
+ * so a button that SHOWS "Following" was announced as "Follow, selected", and a
7
+ * TalkBack user could not tell they already follow the account
8
+ * (OxyHQ/oxy#1375 item 22). The name now says the state, and who it is for
9
+ * when the caller knows the handle.
10
+ *
11
+ * Pure, and kept apart from the components, so every state is pinned by a
12
+ * table test rather than by a render that can only see one state at a time.
13
+ */
14
+
15
+ export interface FollowButtonAccessibility {
16
+ accessibilityLabel: string;
17
+ accessibilityHint?: string;
18
+ }
19
+
20
+ /** `@nate` from `nate` or `@nate`; `undefined` when there is no handle. */
21
+ export function formatHandle(username: string | undefined): string | undefined {
22
+ const bare = username?.trim().replace(/^@+/, '');
23
+ return bare ? `@${bare}` : undefined;
24
+ }
25
+
26
+ /**
27
+ * The single-user button.
28
+ *
29
+ * - `isKnown: false`: the status is still being fetched and the button is
30
+ * inert, so it says so rather than offering a "Follow" it would ignore.
31
+ * - `isPending`: a follow or unfollow is in flight. The name keeps the state
32
+ * the button still shows; the busy flag says the rest, and there is no hint
33
+ * because a press does nothing until the write settles.
34
+ * - Following: "Following @nate", hinted "Unfollows @nate", because pressing
35
+ * it unfollows, which the visible "Following" does not say.
36
+ */
37
+ export function describeFollowButton(input: {
38
+ isKnown: boolean;
39
+ isFollowing: boolean;
40
+ isPending: boolean;
41
+ username?: string;
42
+ }): FollowButtonAccessibility {
43
+ const handle = formatHandle(input.username);
44
+
45
+ if (!input.isKnown) {
46
+ return {
47
+ accessibilityLabel: handle
48
+ ? `Checking whether you follow ${handle}`
49
+ : 'Checking follow status',
50
+ };
51
+ }
52
+
53
+ const accessibilityLabel = input.isFollowing
54
+ ? handle ? `Following ${handle}` : 'Following'
55
+ : handle ? `Follow ${handle}` : 'Follow';
56
+
57
+ if (input.isPending || !input.isFollowing) return { accessibilityLabel };
58
+
59
+ return {
60
+ accessibilityLabel,
61
+ accessibilityHint: handle ? `Unfollows ${handle}` : 'Unfollows this account',
62
+ };
63
+ }
64
+
65
+ /**
66
+ * The "Follow all" button. The labels are the caller's, since a starter pack
67
+ * and a feed's member list word it differently; the hint carries the count.
68
+ */
69
+ export function describeFollowAllButton(input: {
70
+ allFollowing: boolean;
71
+ isPending: boolean;
72
+ count: number;
73
+ followAllLabel: string;
74
+ followedAllLabel: string;
75
+ }): FollowButtonAccessibility {
76
+ const accessibilityLabel = input.allFollowing ? input.followedAllLabel : input.followAllLabel;
77
+ if (input.isPending) return { accessibilityLabel };
78
+ const accounts = input.count === 1 ? '1 account' : `${input.count} accounts`;
79
+ return {
80
+ accessibilityLabel,
81
+ accessibilityHint: input.allFollowing ? `Unfollows all ${accounts}` : `Follows all ${accounts}`,
82
+ };
83
+ }