@oxy.so/services 12.7.0 → 12.8.0

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 (91) hide show
  1. package/lib/commonjs/index.js +7 -0
  2. package/lib/commonjs/index.js.map +1 -1
  3. package/lib/commonjs/ui/client.js +7 -0
  4. package/lib/commonjs/ui/client.js.map +1 -1
  5. package/lib/commonjs/ui/components/FollowButton.js +8 -12
  6. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  7. package/lib/commonjs/ui/components/FollowTargetButton.js +1 -2
  8. package/lib/commonjs/ui/components/FollowTargetButton.js.map +1 -1
  9. package/lib/commonjs/ui/components/followLabels.js +34 -0
  10. package/lib/commonjs/ui/components/followLabels.js.map +1 -1
  11. package/lib/commonjs/ui/hooks/useFollow.js +5 -4
  12. package/lib/commonjs/ui/hooks/useFollow.js.map +1 -1
  13. package/lib/commonjs/ui/hooks/useFollowTarget.js +8 -8
  14. package/lib/commonjs/ui/hooks/useFollowTarget.js.map +1 -1
  15. package/lib/commonjs/ui/stores/followStore.js +10 -9
  16. package/lib/commonjs/ui/stores/followStore.js.map +1 -1
  17. package/lib/commonjs/ui/stores/followTargetStore.js.map +1 -1
  18. package/lib/commonjs/ui/utils/followErrors.js +45 -0
  19. package/lib/commonjs/ui/utils/followErrors.js.map +1 -0
  20. package/lib/module/index.js +1 -0
  21. package/lib/module/index.js.map +1 -1
  22. package/lib/module/ui/client.js +1 -0
  23. package/lib/module/ui/client.js.map +1 -1
  24. package/lib/module/ui/components/FollowButton.js +9 -13
  25. package/lib/module/ui/components/FollowButton.js.map +1 -1
  26. package/lib/module/ui/components/FollowTargetButton.js +2 -3
  27. package/lib/module/ui/components/FollowTargetButton.js.map +1 -1
  28. package/lib/module/ui/components/followLabels.js +33 -1
  29. package/lib/module/ui/components/followLabels.js.map +1 -1
  30. package/lib/module/ui/hooks/useFollow.js +5 -4
  31. package/lib/module/ui/hooks/useFollow.js.map +1 -1
  32. package/lib/module/ui/hooks/useFollowTarget.js +8 -8
  33. package/lib/module/ui/hooks/useFollowTarget.js.map +1 -1
  34. package/lib/module/ui/stores/followStore.js +10 -9
  35. package/lib/module/ui/stores/followStore.js.map +1 -1
  36. package/lib/module/ui/stores/followTargetStore.js.map +1 -1
  37. package/lib/module/ui/utils/followErrors.js +41 -0
  38. package/lib/module/ui/utils/followErrors.js.map +1 -0
  39. package/lib/typescript/commonjs/index.d.ts +2 -0
  40. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  41. package/lib/typescript/commonjs/ui/client.d.ts +2 -0
  42. package/lib/typescript/commonjs/ui/client.d.ts.map +1 -1
  43. package/lib/typescript/commonjs/ui/components/FollowButton.d.ts.map +1 -1
  44. package/lib/typescript/commonjs/ui/components/FollowTargetButton.d.ts.map +1 -1
  45. package/lib/typescript/commonjs/ui/components/followLabels.d.ts +13 -0
  46. package/lib/typescript/commonjs/ui/components/followLabels.d.ts.map +1 -1
  47. package/lib/typescript/commonjs/ui/hooks/useFollow.d.ts +5 -4
  48. package/lib/typescript/commonjs/ui/hooks/useFollow.d.ts.map +1 -1
  49. package/lib/typescript/commonjs/ui/hooks/useFollow.types.d.ts +3 -2
  50. package/lib/typescript/commonjs/ui/hooks/useFollow.types.d.ts.map +1 -1
  51. package/lib/typescript/commonjs/ui/hooks/useFollowTarget.d.ts +4 -2
  52. package/lib/typescript/commonjs/ui/hooks/useFollowTarget.d.ts.map +1 -1
  53. package/lib/typescript/commonjs/ui/stores/followStore.d.ts +3 -1
  54. package/lib/typescript/commonjs/ui/stores/followStore.d.ts.map +1 -1
  55. package/lib/typescript/commonjs/ui/stores/followTargetStore.d.ts +4 -2
  56. package/lib/typescript/commonjs/ui/stores/followTargetStore.d.ts.map +1 -1
  57. package/lib/typescript/commonjs/ui/utils/followErrors.d.ts +42 -0
  58. package/lib/typescript/commonjs/ui/utils/followErrors.d.ts.map +1 -0
  59. package/lib/typescript/module/index.d.ts +2 -0
  60. package/lib/typescript/module/index.d.ts.map +1 -1
  61. package/lib/typescript/module/ui/client.d.ts +2 -0
  62. package/lib/typescript/module/ui/client.d.ts.map +1 -1
  63. package/lib/typescript/module/ui/components/FollowButton.d.ts.map +1 -1
  64. package/lib/typescript/module/ui/components/FollowTargetButton.d.ts.map +1 -1
  65. package/lib/typescript/module/ui/components/followLabels.d.ts +13 -0
  66. package/lib/typescript/module/ui/components/followLabels.d.ts.map +1 -1
  67. package/lib/typescript/module/ui/hooks/useFollow.d.ts +5 -4
  68. package/lib/typescript/module/ui/hooks/useFollow.d.ts.map +1 -1
  69. package/lib/typescript/module/ui/hooks/useFollow.types.d.ts +3 -2
  70. package/lib/typescript/module/ui/hooks/useFollow.types.d.ts.map +1 -1
  71. package/lib/typescript/module/ui/hooks/useFollowTarget.d.ts +4 -2
  72. package/lib/typescript/module/ui/hooks/useFollowTarget.d.ts.map +1 -1
  73. package/lib/typescript/module/ui/stores/followStore.d.ts +3 -1
  74. package/lib/typescript/module/ui/stores/followStore.d.ts.map +1 -1
  75. package/lib/typescript/module/ui/stores/followTargetStore.d.ts +4 -2
  76. package/lib/typescript/module/ui/stores/followTargetStore.d.ts.map +1 -1
  77. package/lib/typescript/module/ui/utils/followErrors.d.ts +42 -0
  78. package/lib/typescript/module/ui/utils/followErrors.d.ts.map +1 -0
  79. package/package.json +5 -5
  80. package/src/index.ts +2 -0
  81. package/src/ui/client.ts +2 -0
  82. package/src/ui/components/FollowButton.tsx +14 -12
  83. package/src/ui/components/FollowTargetButton.tsx +7 -3
  84. package/src/ui/components/followLabels.ts +36 -2
  85. package/src/ui/hooks/useFollow.ts +22 -10
  86. package/src/ui/hooks/useFollow.types.ts +6 -2
  87. package/src/ui/hooks/useFollowTarget.ts +15 -10
  88. package/src/ui/stores/__tests__/followStore.test.ts +1 -1
  89. package/src/ui/stores/followStore.ts +12 -14
  90. package/src/ui/stores/followTargetStore.ts +4 -2
  91. package/src/ui/utils/followErrors.ts +56 -0
@@ -1 +1 @@
1
- {"version":3,"file":"useFollow.types.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useFollow.types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAC/F,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,sBAAsB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACrE,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,cAAc,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChD,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,kBAAkB,GAAG,iBAAiB,CAAC"}
1
+ {"version":3,"file":"useFollow.types.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useFollow.types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAChB,MAAM,EACN;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAA;KAAE,CAC5E,CAAC;IACF,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,sBAAsB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACrE,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,cAAc,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChD,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,kBAAkB,GAAG,iBAAiB,CAAC"}
@@ -15,6 +15,7 @@
15
15
  * width of one request rather than being sent with a guessed id.
16
16
  */
17
17
  import type { FollowStatus } from '@oxy.so/contracts';
18
+ import { type FollowErrorCode } from '../utils/followErrors';
18
19
  export interface UseFollowTargetResult {
19
20
  status: FollowStatus;
20
21
  /**
@@ -25,11 +26,12 @@ export interface UseFollowTargetResult {
25
26
  /** True until the first read settles. Distinct from "not following". */
26
27
  isUnknown: boolean;
27
28
  isPending: boolean;
28
- error: string | undefined;
29
+ /** Why the last read or write failed — a code; `useFollowErrorMessage()` words it. */
30
+ error: FollowErrorCode | undefined;
29
31
  /**
30
32
  * Every mutation resolves to whether the server ACCEPTED it.
31
33
  *
32
- * They never reject — a refusal becomes `error` in the store, so the button
34
+ * They never reject — a refusal becomes an `error` code in the store, so the button
33
35
  * can render it — which means a caller that only awaits them cannot tell a
34
36
  * write that happened from one that did not. Returning the outcome is what
35
37
  * lets a caller mirror the change somewhere else without mirroring failures
@@ -1 +1 @@
1
- {"version":3,"file":"useFollowTarget.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useFollowTarget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAUtD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB,wEAAwE;IACxE,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;;;;;;;OAQG;IACH,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,wEAAwE;IACxE,WAAW,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,YAAY,CAAA;CAAE,GACzC,qBAAqB,CAmKvB"}
1
+ {"version":3,"file":"useFollowTarget.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useFollowTarget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAStD,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB,wEAAwE;IACxE,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,sFAAsF;IACtF,KAAK,EAAE,eAAe,GAAG,SAAS,CAAC;IACnC;;;;;;;;OAQG;IACH,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,wEAAwE;IACxE,WAAW,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,YAAY,CAAA;CAAE,GACzC,qBAAqB,CAkKvB"}
@@ -1,9 +1,11 @@
1
1
  import type { OxyServices, BulkFollowResult, BulkUnfollowResult } from '@oxy.so/core';
2
+ import { type FollowErrorCode } from '../utils/followErrors';
2
3
  interface FollowState {
3
4
  followingUsers: Record<string, boolean>;
4
5
  loadingUsers: Record<string, boolean>;
5
6
  fetchingUsers: Record<string, boolean>;
6
- errors: Record<string, string | null>;
7
+ /** Why the last read or write of a user failed, as a code — never text. */
8
+ errors: Record<string, FollowErrorCode | null>;
7
9
  followerCounts: Record<string, number>;
8
10
  followingCounts: Record<string, number>;
9
11
  loadingCounts: Record<string, boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"followStore.d.ts","sourceRoot":"","sources":["../../../../../src/ui/stores/followStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,cAAc,CAAC;AAEtB,UAAU,WAAW;IAKnB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAEtC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAExC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;IAKnE,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC1D,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAI7B,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7E,gBAAgB,EAAE,CAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,oBAAoB,EAAE,OAAO,KAC1B,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtB,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE5F,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEhG,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,4BAA4B,EAAE,CAC5B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,QAAQ,GAAG,UAAU,EAC7B,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAChD,aAAa,CAAC,EAAE,MAAM,KACnB,IAAI,CAAC;IACV,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9E;AA8BD,kFAAkF;AAClF,eAAO,MAAM,qBAAqB,QAAO,IAMxC,CAAC;AAEF,eAAO,MAAM,cAAc,0EA0YxB,CAAC"}
1
+ {"version":3,"file":"followStore.d.ts","sourceRoot":"","sources":["../../../../../src/ui/stores/followStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,eAAe,EAAqB,MAAM,uBAAuB,CAAC;AAEhF,UAAU,WAAW;IAKnB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC,CAAC;IAE/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAExC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;IAKnE,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC1D,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAI7B,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7E,gBAAgB,EAAE,CAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,oBAAoB,EAAE,OAAO,KAC1B,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtB,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE5F,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEhG,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,4BAA4B,EAAE,CAC5B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,QAAQ,GAAG,UAAU,EAC7B,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAChD,aAAa,CAAC,EAAE,MAAM,KACnB,IAAI,CAAC;IACV,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9E;AA8BD,kFAAkF;AAClF,eAAO,MAAM,qBAAqB,QAAO,IAMxC,CAAC;AAEF,eAAO,MAAM,cAAc,0EAsYxB,CAAC"}
@@ -22,13 +22,15 @@
22
22
  * why a follow the user can see in their list does nothing in this app.
23
23
  */
24
24
  import type { FollowApplicationMode, FollowRecord, FollowStatus } from '@oxy.so/contracts';
25
+ import type { FollowErrorCode } from '../utils/followErrors';
25
26
  /** The status of one target, or `undefined` when it has never been read. */
26
27
  type StatusMap = Record<string, FollowStatus | undefined>;
27
28
  interface FollowTargetState {
28
29
  statuses: StatusMap;
29
30
  /** In-flight writes, per target. Reads do not set this — only mutations do. */
30
31
  pending: Record<string, boolean>;
31
- errors: Record<string, string | undefined>;
32
+ /** Why the last read or write of a target failed, as a code — never text. */
33
+ errors: Record<string, FollowErrorCode | undefined>;
32
34
  setStatus: (targetId: string, status: FollowStatus) => void;
33
35
  /**
34
36
  * Seed many statuses at once — from a follow list, a feed payload, anything
@@ -37,7 +39,7 @@ interface FollowTargetState {
37
39
  */
38
40
  seed: (entries: Record<string, FollowStatus>) => void;
39
41
  setPending: (targetId: string, pending: boolean) => void;
40
- setError: (targetId: string, error: string | undefined) => void;
42
+ setError: (targetId: string, error: FollowErrorCode | undefined) => void;
41
43
  /** Drop everything. Called on identity change — see the note below. */
42
44
  reset: () => void;
43
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"followTargetStore.d.ts","sourceRoot":"","sources":["../../../../../src/ui/stores/followTargetStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE3F,4EAA4E;AAC5E,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC;AAE1D,UAAU,iBAAiB;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAE3C,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5D;;;;OAIG;IACH,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;IACtD,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzD,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAChE,uEAAuE;IACvE,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAInC,CAAC;AAEF,eAAO,MAAM,oBAAoB,gFAoB9B,CAAC;AAEJ;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAGpE;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAQvE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAM9F;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,qBAAqB,GAC1B,YAAY,CAad"}
1
+ {"version":3,"file":"followTargetStore.d.ts","sourceRoot":"","sources":["../../../../../src/ui/stores/followTargetStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,4EAA4E;AAC5E,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC;AAE1D,UAAU,iBAAiB;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC,CAAC;IAEpD,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5D;;;;OAIG;IACH,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;IACtD,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzD,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,SAAS,KAAK,IAAI,CAAC;IACzE,uEAAuE;IACvE,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAInC,CAAC;AAEF,eAAO,MAAM,oBAAoB,gFAoB9B,CAAC;AAEJ;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAGpE;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAQvE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAM9F;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,qBAAqB,GAC1B,YAAY,CAad"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * What a failed follow read or write leaves behind: a stable CODE, never text.
3
+ *
4
+ * The follow stores and hooks have no translator and must not pretend to — an
5
+ * English sentence written into a store reaches every locale's toast verbatim,
6
+ * and so does a server's `message`. They keep one of these codes instead, and
7
+ * the UI turns it into words in the user's language (`describeFollowError` in
8
+ * `components/followLabels.ts`).
9
+ *
10
+ * A code says either what the caller was doing (`read_failed`, `update_failed`,
11
+ * `mode_failed`) or — when the failure says more than that — why it failed,
12
+ * taken from the API's machine code and HTTP status rather than its message.
13
+ */
14
+ export type FollowErrorCode =
15
+ /** The status could not be read. */
16
+ 'read_failed'
17
+ /** A follow or unfollow was refused. */
18
+ | 'update_failed'
19
+ /** Switching a follow off or back on in this application was refused. */
20
+ | 'mode_failed'
21
+ /** No response arrived: the device is offline, or the request timed out. */
22
+ | 'offline'
23
+ /** The session is gone; signing in again is the only fix. */
24
+ | 'signed_out'
25
+ /** This application lacks the permission the write needs. */
26
+ | 'forbidden'
27
+ /** The target or the relationship no longer exists. */
28
+ | 'not_found'
29
+ /** Too many writes in a short window. */
30
+ | 'rate_limited';
31
+ /** The codes that name the caller's action rather than a cause. */
32
+ export type FollowActionErrorCode = 'read_failed' | 'update_failed' | 'mode_failed';
33
+ /**
34
+ * The code for whatever a follow request rejected with.
35
+ *
36
+ * Read structurally — every `OxyServices` call rejects with an `OxyApiError`
37
+ * (or an `OxyAuthenticationError`), and both carry `status` and `code` — so a
38
+ * second copy of `@oxy.so/core` in an app cannot defeat an `instanceof`.
39
+ * Anything the cause does not explain falls back to the caller's `action`.
40
+ */
41
+ export declare function toFollowErrorCode(error: unknown, action: FollowActionErrorCode): FollowErrorCode;
42
+ //# sourceMappingURL=followErrors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"followErrors.d.ts","sourceRoot":"","sources":["../../../../../src/ui/utils/followErrors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,eAAe;AACzB,oCAAoC;AAClC,aAAa;AACf,wCAAwC;GACtC,eAAe;AACjB,yEAAyE;GACvE,aAAa;AACf,4EAA4E;GAC1E,SAAS;AACX,6DAA6D;GAC3D,YAAY;AACd,6DAA6D;GAC3D,WAAW;AACb,uDAAuD;GACrD,WAAW;AACb,yCAAyC;GACvC,cAAc,CAAC;AAEnB,mEAAmE;AACnE,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG,eAAe,GAAG,aAAa,CAAC;AAIpF;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,qBAAqB,GAAG,eAAe,CAWhG"}
@@ -87,6 +87,8 @@ export { buildFollowMenuItems, resolveFollowPrimaryAction, FOLLOW_ACTION_LEAVES_
87
87
  export type { FollowDuration, FollowMenuItem } from './ui/components/followRules.js';
88
88
  export type { FollowTargetButtonProps } from './ui/components/FollowTargetButton.js';
89
89
  export type { FollowVerb, FollowLabels } from './ui/components/followLabels.js';
90
+ export { useFollowErrorMessage } from './ui/components/followLabels.js';
91
+ export type { FollowErrorCode } from './ui/utils/followErrors.js';
90
92
  export { useFollowTarget } from './ui/hooks/useFollowTarget.js';
91
93
  export type { UseFollowTargetResult } from './ui/hooks/useFollowTarget.js';
92
94
  export { useFollowTargetStore, UNKNOWN_FOLLOW_STATUS, isFollowedGlobally, withApplicationMode, isCompleteFollowStatus, followRecordToStatus, followRecordsToStatusMap, } from './ui/stores/followTargetStore.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,8 @@ export type { FollowButtonProps, SingleFollowButtonProps, MultiFollowButtonProps
23
23
  export { FollowTargetButton } from './components/FollowTargetButton.js';
24
24
  export type { FollowTargetButtonProps } from './components/FollowTargetButton.js';
25
25
  export type { FollowVerb, FollowLabels } from './components/followLabels.js';
26
+ export { useFollowErrorMessage } from './components/followLabels.js';
27
+ export type { FollowErrorCode } from './utils/followErrors.js';
26
28
  export { default as ProfileButton } from './components/ProfileButton.js';
27
29
  export type { ProfileButtonProps } from './components/ProfileButton.js';
28
30
  export { default as PeableButton } from './components/PeableButton.js';
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/ui/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/ui/client.ts"],"names":[],"mappings":"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"}
@@ -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,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMpE,OAAO,KAAK,EAAe,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAItF,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAmB,MAAM,mBAAgB,CAAC;AAErF,gEAAgE;AAChE,UAAU,qBAAqB;IAC7B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,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;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,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,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,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;AAwPjF,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAsC7C,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,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMpE,OAAO,KAAK,EAAe,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAKtF,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,UAAU,EAEhB,MAAM,mBAAgB,CAAC;AAExB,gEAAgE;AAChE,UAAU,qBAAqB;IAC7B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,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;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,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,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,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;AAoPjF,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAsC7C,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAkBzD,OAAO,EAIL,KAAK,cAAc,EAEpB,MAAM,kBAAe,CAAC;AACvB,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAmB,MAAM,mBAAgB,CAAC;AAiBrF,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;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,+DAsM7B,CAAC"}
1
+ {"version":3,"file":"FollowTargetButton.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/FollowTargetButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAkBzD,OAAO,EAIL,KAAK,cAAc,EAEpB,MAAM,kBAAe,CAAC;AACvB,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,UAAU,EAEhB,MAAM,mBAAgB,CAAC;AAiBxB,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;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,+DAqM7B,CAAC"}
@@ -7,6 +7,8 @@
7
7
  * strings, so a verb reads the same — and in the same language — wherever it is
8
8
  * drawn.
9
9
  */
10
+ import { type Translate } from '../hooks/useI18n.js';
11
+ import type { FollowErrorCode } from '../utils/followErrors.js';
10
12
  /**
11
13
  * The small vocabulary of verbs the ecosystem actually uses. An application
12
14
  * whose verb is not here passes `labels` instead — the escape hatch exists so
@@ -25,4 +27,15 @@ export interface FollowLabels {
25
27
  }
26
28
  /** The labels for `verb` in the current language, with the caller's `overrides` on top. */
27
29
  export declare function useFollowLabels(verb?: FollowVerb, overrides?: Partial<FollowLabels>): FollowLabels;
30
+ /**
31
+ * What a follow error says, in the current language. Every component that
32
+ * shows a follow failure reads it here; a missing code (a failure the store
33
+ * did not record) reads as the generic "could not update".
34
+ */
35
+ export declare function describeFollowError(code: FollowErrorCode | null | undefined, t: Translate): string;
36
+ /**
37
+ * `describeFollowError` bound to the current language, for an application that
38
+ * renders `useFollowTarget().error` (or `useFollow().error`) itself.
39
+ */
40
+ export declare function useFollowErrorMessage(): (code: FollowErrorCode | null | undefined) => string;
28
41
  //# sourceMappingURL=followLabels.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"followLabels.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/followLabels.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH;;;;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;AAED,2FAA2F;AAC3F,wBAAgB,eAAe,CAC7B,IAAI,GAAE,UAAqB,EAC3B,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAChC,YAAY,CAYd"}
1
+ {"version":3,"file":"followLabels.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/followLabels.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,KAAK,SAAS,EAAW,MAAM,qBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAAuB,CAAC;AAE7D;;;;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;AAED,2FAA2F;AAC3F,wBAAgB,eAAe,CAC7B,IAAI,GAAE,UAAqB,EAC3B,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAChC,YAAY,CAYd;AAcD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,EACxC,CAAC,EAAE,SAAS,GACX,MAAM,CAER;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,KAAK,MAAM,CAG5F"}
@@ -1,4 +1,5 @@
1
- import type { OxyServices, BulkFollowResult, BulkUnfollowResult } from '@oxy.so/core';
1
+ import { type OxyServices, type BulkFollowResult, type BulkUnfollowResult } from '@oxy.so/core';
2
+ import type { FollowErrorCode } from '../utils/followErrors.js';
2
3
  /**
3
4
  * useFollow — Hook for follow state management.
4
5
  *
@@ -15,7 +16,7 @@ import type { OxyServices, BulkFollowResult, BulkUnfollowResult } from '@oxy.so/
15
16
  export declare const useFollow: (userId?: string | string[]) => {
16
17
  isFollowing: boolean;
17
18
  isLoading: boolean;
18
- error: string | null;
19
+ error: FollowErrorCode | null;
19
20
  toggleFollow: () => Promise<void>;
20
21
  setFollowStatus: (following: boolean) => void;
21
22
  fetchStatus: () => Promise<void>;
@@ -42,7 +43,7 @@ export declare const useFollow: (userId?: string | string[]) => {
42
43
  followData: Record<string, {
43
44
  isFollowing: boolean;
44
45
  isLoading: boolean;
45
- error: string | null;
46
+ error: FollowErrorCode | null;
46
47
  }>;
47
48
  toggleFollowForUser: (targetUserId: string) => Promise<void>;
48
49
  setFollowStatusForUser: (targetUserId: string, following: boolean) => void;
@@ -81,7 +82,7 @@ export declare const useFollowForButton: (userId: string, oxyServices: OxyServic
81
82
  isFollowing: boolean;
82
83
  isKnown: boolean;
83
84
  isLoading: boolean;
84
- error: string | null;
85
+ error: FollowErrorCode | null;
85
86
  toggleFollow: () => Promise<boolean>;
86
87
  resolveStatus: () => void;
87
88
  setFollowStatus: (following: boolean) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useFollow.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useFollow.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAKtF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,SAAS,GAAI,SAAS,MAAM,GAAG,MAAM,EAAE;;;;;iCAqHpC,OAAO;;;;;;;8BA4BX,MAAM;+BASN,MAAM;;;;;;;;;;;;;;;qBAnF4B,OAAO;mBAAa,OAAO;eAAS,MAAM,GAAG,IAAI;;wCAqHtE,MAAM;2CAW6B,MAAM,aAAa,OAAO;uCAK7D,MAAM;;0BAegB,OAAO,CAAC,gBAAgB,CAAC;4BAMvB,OAAO,CAAC,kBAAkB,CAAC;sCAKrB,MAAM;;;;;;;;;;;;;;;;;;CAkD5D,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,MAAM,EACd,aAAa,WAAW,EACxB,qBAAqB,OAAO;;;;;wBA8Be,OAAO,CAAC,OAAO,CAAC;;iCAc7C,OAAO;;CAoBtB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,mBACT,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAExC,CAAC;AAGT,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM;;;;;8BAkBpC,MAAM;+BAON,MAAM;CAcjB,CAAC"}
1
+ {"version":3,"file":"useFollow.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useFollow.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACxB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAAuB,CAAC;AAK7D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,SAAS,GAAI,SAAS,MAAM,GAAG,MAAM,EAAE;;;;;iCAwHpC,OAAO;;;;;;;8BA4BX,MAAM;+BASN,MAAM;;;;;;;;;;;;;;;qBApFG,OAAO;mBAAa,OAAO;eAAS,eAAe,GAAG,IAAI;;wCAsHtD,MAAM;2CAY6B,MAAM,aAAa,OAAO;uCAK7D,MAAM;;0BAegB,OAAO,CAAC,gBAAgB,CAAC;4BAOvB,OAAO,CAAC,kBAAkB,CAAC;sCAMrB,MAAM;;;;;;;;;;;;;;;;;;CAkD5D,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,MAAM,EACd,aAAa,WAAW,EACxB,qBAAqB,OAAO;;;;;wBA8Be,OAAO,CAAC,OAAO,CAAC;;iCAc7C,OAAO;;CAoBtB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,mBACT,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAExC,CAAC;AAGT,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM;;;;;8BAkBpC,MAAM;+BAON,MAAM;CAcjB,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import type { BulkFollowResult } from '@oxy.so/core';
2
+ import type { FollowErrorCode } from '../utils/followErrors.js';
2
3
  export type SingleFollowResult = {
3
4
  isFollowing: boolean;
4
5
  isLoading: boolean;
5
- error: string | null;
6
+ error: FollowErrorCode | null;
6
7
  toggleFollow: () => Promise<void>;
7
8
  setFollowStatus: (following: boolean) => void;
8
9
  fetchStatus: () => Promise<void>;
@@ -18,7 +19,7 @@ export type MultiFollowResult = {
18
19
  followData: Record<string, {
19
20
  isFollowing: boolean;
20
21
  isLoading: boolean;
21
- error: string | null;
22
+ error: FollowErrorCode | null;
22
23
  }>;
23
24
  toggleFollowForUser: (userId: string) => Promise<void>;
24
25
  setFollowStatusForUser: (userId: string, following: boolean) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useFollow.types.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useFollow.types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAC/F,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,sBAAsB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACrE,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,cAAc,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChD,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,kBAAkB,GAAG,iBAAiB,CAAC"}
1
+ {"version":3,"file":"useFollow.types.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useFollow.types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAAuB,CAAC;AAE7D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAChB,MAAM,EACN;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAA;KAAE,CAC5E,CAAC;IACF,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,sBAAsB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACrE,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,cAAc,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChD,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,kBAAkB,GAAG,iBAAiB,CAAC"}
@@ -15,6 +15,7 @@
15
15
  * width of one request rather than being sent with a guessed id.
16
16
  */
17
17
  import type { FollowStatus } from '@oxy.so/contracts';
18
+ import { type FollowErrorCode } from '../utils/followErrors.js';
18
19
  export interface UseFollowTargetResult {
19
20
  status: FollowStatus;
20
21
  /**
@@ -25,11 +26,12 @@ export interface UseFollowTargetResult {
25
26
  /** True until the first read settles. Distinct from "not following". */
26
27
  isUnknown: boolean;
27
28
  isPending: boolean;
28
- error: string | undefined;
29
+ /** Why the last read or write failed — a code; `useFollowErrorMessage()` words it. */
30
+ error: FollowErrorCode | undefined;
29
31
  /**
30
32
  * Every mutation resolves to whether the server ACCEPTED it.
31
33
  *
32
- * They never reject — a refusal becomes `error` in the store, so the button
34
+ * They never reject — a refusal becomes an `error` code in the store, so the button
33
35
  * can render it — which means a caller that only awaits them cannot tell a
34
36
  * write that happened from one that did not. Returning the outcome is what
35
37
  * lets a caller mirror the change somewhere else without mirroring failures
@@ -1 +1 @@
1
- {"version":3,"file":"useFollowTarget.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useFollowTarget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAUtD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB,wEAAwE;IACxE,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;;;;;;;OAQG;IACH,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,wEAAwE;IACxE,WAAW,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,YAAY,CAAA;CAAE,GACzC,qBAAqB,CAmKvB"}
1
+ {"version":3,"file":"useFollowTarget.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useFollowTarget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAStD,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,0BAAuB,CAAC;AAE/B,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB,wEAAwE;IACxE,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,sFAAsF;IACtF,KAAK,EAAE,eAAe,GAAG,SAAS,CAAC;IACnC;;;;;;;;OAQG;IACH,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,wEAAwE;IACxE,WAAW,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,YAAY,CAAA;CAAE,GACzC,qBAAqB,CAkKvB"}
@@ -1,9 +1,11 @@
1
1
  import type { OxyServices, BulkFollowResult, BulkUnfollowResult } from '@oxy.so/core';
2
+ import { type FollowErrorCode } from '../utils/followErrors.js';
2
3
  interface FollowState {
3
4
  followingUsers: Record<string, boolean>;
4
5
  loadingUsers: Record<string, boolean>;
5
6
  fetchingUsers: Record<string, boolean>;
6
- errors: Record<string, string | null>;
7
+ /** Why the last read or write of a user failed, as a code — never text. */
8
+ errors: Record<string, FollowErrorCode | null>;
7
9
  followerCounts: Record<string, number>;
8
10
  followingCounts: Record<string, number>;
9
11
  loadingCounts: Record<string, boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"followStore.d.ts","sourceRoot":"","sources":["../../../../../src/ui/stores/followStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,cAAc,CAAC;AAEtB,UAAU,WAAW;IAKnB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;IAEtC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAExC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;IAKnE,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC1D,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAI7B,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7E,gBAAgB,EAAE,CAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,oBAAoB,EAAE,OAAO,KAC1B,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtB,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE5F,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEhG,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,4BAA4B,EAAE,CAC5B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,QAAQ,GAAG,UAAU,EAC7B,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAChD,aAAa,CAAC,EAAE,MAAM,KACnB,IAAI,CAAC;IACV,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9E;AA8BD,kFAAkF;AAClF,eAAO,MAAM,qBAAqB,QAAO,IAMxC,CAAC;AAEF,eAAO,MAAM,cAAc,0EA0YxB,CAAC"}
1
+ {"version":3,"file":"followStore.d.ts","sourceRoot":"","sources":["../../../../../src/ui/stores/followStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,eAAe,EAAqB,MAAM,0BAAuB,CAAC;AAEhF,UAAU,WAAW;IAKnB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC,CAAC;IAE/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAExC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;IAKnE,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC1D,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAI7B,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7E,gBAAgB,EAAE,CAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,oBAAoB,EAAE,OAAO,KAC1B,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtB,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE5F,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEhG,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,4BAA4B,EAAE,CAC5B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,QAAQ,GAAG,UAAU,EAC7B,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAChD,aAAa,CAAC,EAAE,MAAM,KACnB,IAAI,CAAC;IACV,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9E;AA8BD,kFAAkF;AAClF,eAAO,MAAM,qBAAqB,QAAO,IAMxC,CAAC;AAEF,eAAO,MAAM,cAAc,0EAsYxB,CAAC"}
@@ -22,13 +22,15 @@
22
22
  * why a follow the user can see in their list does nothing in this app.
23
23
  */
24
24
  import type { FollowApplicationMode, FollowRecord, FollowStatus } from '@oxy.so/contracts';
25
+ import type { FollowErrorCode } from '../utils/followErrors.js';
25
26
  /** The status of one target, or `undefined` when it has never been read. */
26
27
  type StatusMap = Record<string, FollowStatus | undefined>;
27
28
  interface FollowTargetState {
28
29
  statuses: StatusMap;
29
30
  /** In-flight writes, per target. Reads do not set this — only mutations do. */
30
31
  pending: Record<string, boolean>;
31
- errors: Record<string, string | undefined>;
32
+ /** Why the last read or write of a target failed, as a code — never text. */
33
+ errors: Record<string, FollowErrorCode | undefined>;
32
34
  setStatus: (targetId: string, status: FollowStatus) => void;
33
35
  /**
34
36
  * Seed many statuses at once — from a follow list, a feed payload, anything
@@ -37,7 +39,7 @@ interface FollowTargetState {
37
39
  */
38
40
  seed: (entries: Record<string, FollowStatus>) => void;
39
41
  setPending: (targetId: string, pending: boolean) => void;
40
- setError: (targetId: string, error: string | undefined) => void;
42
+ setError: (targetId: string, error: FollowErrorCode | undefined) => void;
41
43
  /** Drop everything. Called on identity change — see the note below. */
42
44
  reset: () => void;
43
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"followTargetStore.d.ts","sourceRoot":"","sources":["../../../../../src/ui/stores/followTargetStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE3F,4EAA4E;AAC5E,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC;AAE1D,UAAU,iBAAiB;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAE3C,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5D;;;;OAIG;IACH,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;IACtD,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzD,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAChE,uEAAuE;IACvE,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAInC,CAAC;AAEF,eAAO,MAAM,oBAAoB,gFAoB9B,CAAC;AAEJ;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAGpE;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAQvE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAM9F;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,qBAAqB,GAC1B,YAAY,CAad"}
1
+ {"version":3,"file":"followTargetStore.d.ts","sourceRoot":"","sources":["../../../../../src/ui/stores/followTargetStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAAuB,CAAC;AAE7D,4EAA4E;AAC5E,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC;AAE1D,UAAU,iBAAiB;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC,CAAC;IAEpD,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5D;;;;OAIG;IACH,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;IACtD,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzD,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,SAAS,KAAK,IAAI,CAAC;IACzE,uEAAuE;IACvE,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAInC,CAAC;AAEF,eAAO,MAAM,oBAAoB,gFAoB9B,CAAC;AAEJ;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAGpE;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAQvE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAM9F;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,qBAAqB,GAC1B,YAAY,CAad"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * What a failed follow read or write leaves behind: a stable CODE, never text.
3
+ *
4
+ * The follow stores and hooks have no translator and must not pretend to — an
5
+ * English sentence written into a store reaches every locale's toast verbatim,
6
+ * and so does a server's `message`. They keep one of these codes instead, and
7
+ * the UI turns it into words in the user's language (`describeFollowError` in
8
+ * `components/followLabels.ts`).
9
+ *
10
+ * A code says either what the caller was doing (`read_failed`, `update_failed`,
11
+ * `mode_failed`) or — when the failure says more than that — why it failed,
12
+ * taken from the API's machine code and HTTP status rather than its message.
13
+ */
14
+ export type FollowErrorCode =
15
+ /** The status could not be read. */
16
+ 'read_failed'
17
+ /** A follow or unfollow was refused. */
18
+ | 'update_failed'
19
+ /** Switching a follow off or back on in this application was refused. */
20
+ | 'mode_failed'
21
+ /** No response arrived: the device is offline, or the request timed out. */
22
+ | 'offline'
23
+ /** The session is gone; signing in again is the only fix. */
24
+ | 'signed_out'
25
+ /** This application lacks the permission the write needs. */
26
+ | 'forbidden'
27
+ /** The target or the relationship no longer exists. */
28
+ | 'not_found'
29
+ /** Too many writes in a short window. */
30
+ | 'rate_limited';
31
+ /** The codes that name the caller's action rather than a cause. */
32
+ export type FollowActionErrorCode = 'read_failed' | 'update_failed' | 'mode_failed';
33
+ /**
34
+ * The code for whatever a follow request rejected with.
35
+ *
36
+ * Read structurally — every `OxyServices` call rejects with an `OxyApiError`
37
+ * (or an `OxyAuthenticationError`), and both carry `status` and `code` — so a
38
+ * second copy of `@oxy.so/core` in an app cannot defeat an `instanceof`.
39
+ * Anything the cause does not explain falls back to the caller's `action`.
40
+ */
41
+ export declare function toFollowErrorCode(error: unknown, action: FollowActionErrorCode): FollowErrorCode;
42
+ //# sourceMappingURL=followErrors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"followErrors.d.ts","sourceRoot":"","sources":["../../../../../src/ui/utils/followErrors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,eAAe;AACzB,oCAAoC;AAClC,aAAa;AACf,wCAAwC;GACtC,eAAe;AACjB,yEAAyE;GACvE,aAAa;AACf,4EAA4E;GAC1E,SAAS;AACX,6DAA6D;GAC3D,YAAY;AACd,6DAA6D;GAC3D,WAAW;AACb,uDAAuD;GACrD,WAAW;AACb,yCAAyC;GACvC,cAAc,CAAC;AAEnB,mEAAmE;AACnE,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG,eAAe,GAAG,aAAa,CAAC;AAIpF;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,qBAAqB,GAAG,eAAe,CAWhG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxy.so/services",
3
- "version": "12.7.0",
3
+ "version": "12.8.0",
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",
@@ -151,7 +151,7 @@
151
151
  "prepublishOnly": "node ../../scripts/assert-bun-publish.mjs && bun run typescript && bun run test && bun run build"
152
152
  },
153
153
  "dependencies": {
154
- "@oxy.so/contracts": "^5.4.0",
154
+ "@oxy.so/contracts": "^5.5.0",
155
155
  "color": "^5.0.3",
156
156
  "@peable.to/sdk": "0.4.1"
157
157
  },
@@ -160,7 +160,7 @@
160
160
  "@commitlint/config-conventional": "^21.2.0",
161
161
  "@expo/app-integrity": "~58.0.2",
162
162
  "@expo/vector-icons": "^15.0.3",
163
- "@oxy.so/core": "6.9.3",
163
+ "@oxy.so/core": "6.11.0",
164
164
  "@react-native-async-storage/async-storage": "^2.0.0",
165
165
  "@react-native-community/netinfo": "^12.0.1",
166
166
  "@react-native/babel-preset": "^0.88.0",
@@ -210,12 +210,12 @@
210
210
  "expo-video": "~58.0.11"
211
211
  },
212
212
  "//@oxy.so/bloom": "Bloom 11.1.0 adds the shared grouped sections, usage card, subscription plans, frame appearance and overlay navigation APIs used by this SDK. First-party Bloom peers remain open above this tested minimum.",
213
- "//@oxy.so/core": "Core 6.4.0 supplies the `follow.*` strings the follow buttons read for every verb and language; 6.1.0 the `oxy.auth.email.{startChange,change,remove}` and `oxy.auth.password.remove` the sign-in & security panels call. Keep one Core instance per app; raise this floor with the root catalogue when new runtime APIs are required.",
213
+ "//@oxy.so/core": "Core 6.11.0 supplies the `follow.errors.*` strings the follow error codes are worded with; 6.4.0 the `follow.*` strings the follow buttons read for every verb and language; 6.1.0 the `oxy.auth.email.{startChange,change,remove}` and `oxy.auth.password.remove` the sign-in & security panels call. Keep one Core instance per app; raise this floor with the root catalogue when new runtime APIs are required.",
214
214
  "peerDependencies": {
215
215
  "@expo/app-integrity": ">=56.0.0 <59.0.0",
216
216
  "@expo/vector-icons": "^15.0.3",
217
217
  "@oxy.so/bloom": ">=11.1.0",
218
- "@oxy.so/core": "^6.4.0",
218
+ "@oxy.so/core": "^6.11.0",
219
219
  "@react-native-async-storage/async-storage": "^2.0.0",
220
220
  "@react-native-community/netinfo": ">=11.4.1 <13.0.0",
221
221
  "@tanstack/query-async-storage-persister": "^5.101",
package/src/index.ts CHANGED
@@ -346,6 +346,8 @@ export {
346
346
  export type { FollowDuration, FollowMenuItem } from './ui/components/followRules';
347
347
  export type { FollowTargetButtonProps } from './ui/components/FollowTargetButton';
348
348
  export type { FollowVerb, FollowLabels } from './ui/components/followLabels';
349
+ export { useFollowErrorMessage } from './ui/components/followLabels';
350
+ export type { FollowErrorCode } from './ui/utils/followErrors';
349
351
  export { useFollowTarget } from './ui/hooks/useFollowTarget';
350
352
  export type { UseFollowTargetResult } from './ui/hooks/useFollowTarget';
351
353
  export {
package/src/ui/client.ts CHANGED
@@ -31,6 +31,8 @@ export type {
31
31
  export { FollowTargetButton } from './components/FollowTargetButton';
32
32
  export type { FollowTargetButtonProps } from './components/FollowTargetButton';
33
33
  export type { FollowVerb, FollowLabels } from './components/followLabels';
34
+ export { useFollowErrorMessage } from './components/followLabels';
35
+ export type { FollowErrorCode } from './utils/followErrors';
34
36
  export { default as ProfileButton } from './components/ProfileButton';
35
37
  export type { ProfileButtonProps } from './components/ProfileButton';
36
38
  export { default as PeableButton } from './components/PeableButton';