hackmate-cli 1.0.28 → 1.1.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 (80) hide show
  1. package/dist/Dashboard.d.ts +2 -0
  2. package/dist/Dashboard.d.ts.map +1 -0
  3. package/dist/Dashboard.js +69 -0
  4. package/dist/Dashboard.js.map +1 -0
  5. package/dist/api.d.ts.map +1 -1
  6. package/dist/api.js +9 -1
  7. package/dist/api.js.map +1 -1
  8. package/dist/cli.js +5 -4
  9. package/dist/cli.js.map +1 -1
  10. package/dist/commands/Config.d.ts.map +1 -1
  11. package/dist/commands/Config.js +6 -5
  12. package/dist/commands/Config.js.map +1 -1
  13. package/dist/commands/DataExport.d.ts.map +1 -1
  14. package/dist/commands/DataExport.js +11 -15
  15. package/dist/commands/DataExport.js.map +1 -1
  16. package/dist/commands/Discover.d.ts.map +1 -1
  17. package/dist/commands/Discover.js +28 -74
  18. package/dist/commands/Discover.js.map +1 -1
  19. package/dist/commands/MatchList.d.ts.map +1 -1
  20. package/dist/commands/MatchList.js +49 -76
  21. package/dist/commands/MatchList.js.map +1 -1
  22. package/dist/commands/Presence.d.ts.map +1 -1
  23. package/dist/commands/Presence.js +10 -8
  24. package/dist/commands/Presence.js.map +1 -1
  25. package/dist/commands/Privacy.d.ts.map +1 -1
  26. package/dist/commands/Privacy.js +16 -31
  27. package/dist/commands/Privacy.js.map +1 -1
  28. package/dist/commands/Settings.d.ts.map +1 -1
  29. package/dist/commands/Settings.js +13 -31
  30. package/dist/commands/Settings.js.map +1 -1
  31. package/dist/commands/Stats.d.ts.map +1 -1
  32. package/dist/commands/Stats.js +12 -31
  33. package/dist/commands/Stats.js.map +1 -1
  34. package/dist/features/chat/components/ChatList.d.ts.map +1 -1
  35. package/dist/features/chat/components/ChatList.js +20 -38
  36. package/dist/features/chat/components/ChatList.js.map +1 -1
  37. package/dist/features/network/components/UnfriendByUsername.d.ts.map +1 -1
  38. package/dist/features/network/components/UnfriendByUsername.js +8 -8
  39. package/dist/features/network/components/UnfriendByUsername.js.map +1 -1
  40. package/dist/features/network/components/network.screen.d.ts.map +1 -1
  41. package/dist/features/network/components/network.screen.js +8 -7
  42. package/dist/features/network/components/network.screen.js.map +1 -1
  43. package/dist/features/profile/components/profile-edit-v3.screen.d.ts.map +1 -1
  44. package/dist/features/profile/components/profile-edit-v3.screen.js +14 -0
  45. package/dist/features/profile/components/profile-edit-v3.screen.js.map +1 -1
  46. package/dist/features/profile/components/profile-edit.screen.d.ts.map +1 -1
  47. package/dist/features/profile/components/profile-edit.screen.js +12 -12
  48. package/dist/features/profile/components/profile-edit.screen.js.map +1 -1
  49. package/dist/features/profile/components/profile-view.screen.d.ts.map +1 -1
  50. package/dist/features/profile/components/profile-view.screen.js +14 -17
  51. package/dist/features/profile/components/profile-view.screen.js.map +1 -1
  52. package/dist/shared/components/DataList.d.ts +10 -0
  53. package/dist/shared/components/DataList.d.ts.map +1 -0
  54. package/dist/shared/components/DataList.js +9 -0
  55. package/dist/shared/components/DataList.js.map +1 -0
  56. package/dist/shared/components/ErrorState.d.ts +7 -0
  57. package/dist/shared/components/ErrorState.d.ts.map +1 -0
  58. package/dist/shared/components/ErrorState.js +6 -0
  59. package/dist/shared/components/ErrorState.js.map +1 -0
  60. package/dist/shared/components/Loader.d.ts +7 -0
  61. package/dist/shared/components/Loader.d.ts.map +1 -0
  62. package/dist/shared/components/Loader.js +7 -0
  63. package/dist/shared/components/Loader.js.map +1 -0
  64. package/dist/shared/components/Screen.d.ts +10 -0
  65. package/dist/shared/components/Screen.d.ts.map +1 -0
  66. package/dist/shared/components/Screen.js +6 -0
  67. package/dist/shared/components/Screen.js.map +1 -0
  68. package/dist/shared/components/index.d.ts +5 -0
  69. package/dist/shared/components/index.d.ts.map +1 -0
  70. package/dist/shared/components/index.js +5 -0
  71. package/dist/shared/components/index.js.map +1 -0
  72. package/dist/shared/hooks/useAsyncRequest.d.ts +9 -0
  73. package/dist/shared/hooks/useAsyncRequest.d.ts.map +1 -0
  74. package/dist/shared/hooks/useAsyncRequest.js +52 -0
  75. package/dist/shared/hooks/useAsyncRequest.js.map +1 -0
  76. package/dist/shared/hooks/useListNavigation.d.ts +5 -0
  77. package/dist/shared/hooks/useListNavigation.d.ts.map +1 -0
  78. package/dist/shared/hooks/useListNavigation.js +15 -0
  79. package/dist/shared/hooks/useListNavigation.js.map +1 -0
  80. package/package.json +4 -4
@@ -1,70 +1,21 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useState, useEffect } from 'react';
3
- import { Box, Text, useInput, useApp } from 'ink';
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { Box, Text, useInput } from 'ink';
4
4
  import SelectInput from 'ink-select-input';
5
5
  import api from '../api.js';
6
- import { useAuth } from '../context/index.js';
7
6
  import { Chat } from '../features/chat/index.js';
8
7
  import { ProfileView } from '../features/profile/index.js';
8
+ import { useAsyncRequest } from '../shared/hooks/useAsyncRequest.js';
9
+ import { useListNavigation } from '../shared/hooks/useListNavigation.js';
10
+ import { useEscapeKey } from '../shared/hooks/useEscapeKey.js';
11
+ import { Screen, Loader, ErrorState, DataList } from '../shared/components/index.js';
9
12
  export const MatchList = () => {
10
- const { exit } = useApp();
11
- const { isAuthenticated, isLoading: authLoading } = useAuth();
12
- const [matches, setMatches] = useState([]);
13
- const [loading, setLoading] = useState(true);
14
- const [error, setError] = useState(null);
15
- const [selectedIndex, setSelectedIndex] = useState(0);
13
+ const { data: matches, loading, error } = useAsyncRequest('/match/top?limit=10');
14
+ // We only initialize navigation if we have matches, defaulting to 0
15
+ const { selectedIndex, setSelectedIndex } = useListNavigation(matches?.length || 0);
16
16
  const [viewMode, setViewMode] = useState('list');
17
17
  const [actionMessage, setActionMessage] = useState(null);
18
- useInput((input, key) => {
19
- if (viewMode === 'list') {
20
- if (key.escape) {
21
- exit();
22
- return;
23
- }
24
- if (key.upArrow) {
25
- setSelectedIndex(Math.max(0, selectedIndex - 1));
26
- }
27
- if (key.downArrow) {
28
- setSelectedIndex(Math.min(matches.length - 1, selectedIndex + 1));
29
- }
30
- if (key.return) {
31
- setViewMode('actions');
32
- }
33
- }
34
- else if (viewMode === 'profile') {
35
- if (key.escape) {
36
- setViewMode('list');
37
- }
38
- }
39
- });
40
- useEffect(() => {
41
- if (authLoading)
42
- return;
43
- if (!isAuthenticated) {
44
- setError('Please login first using "hackmate auth login"');
45
- setLoading(false);
46
- setTimeout(() => exit(), 100);
47
- return;
48
- }
49
- const fetchMatches = async () => {
50
- try {
51
- const { data } = await api.get('/match/top?limit=10');
52
- setMatches(data);
53
- }
54
- catch (err) {
55
- let msg = err.response?.data?.message || 'Failed to fetch matches';
56
- if (msg.includes('No Authorization')) {
57
- msg = 'Please login first using "hackmate auth login"';
58
- }
59
- setError(msg);
60
- setTimeout(() => exit(), 100);
61
- }
62
- finally {
63
- setLoading(false);
64
- }
65
- };
66
- fetchMatches();
67
- }, [isAuthenticated, authLoading]);
18
+ // Actions
68
19
  const handleActionSelect = async (item) => {
69
20
  if (item.value === 'back') {
70
21
  setViewMode('list');
@@ -74,45 +25,67 @@ export const MatchList = () => {
74
25
  }
75
26
  else if (item.value === 'dm') {
76
27
  setViewMode('chat');
77
- // Chat component handles input, so we don't need to do anything else here
78
28
  }
79
29
  else if (item.value === 'follow') {
80
30
  try {
81
31
  const targetId = matches[selectedIndex].userId._id;
82
32
  await api.post('/network/request', { targetUserId: targetId });
83
- setActionMessage(`✅ Friend request sent to @${matches[selectedIndex].userId.username}!`);
33
+ setActionMessage(`✅ Request sent!`);
84
34
  }
85
35
  catch (e) {
86
36
  setActionMessage(`❌ Error: ${e.response?.data?.message || e.message}`);
87
37
  }
88
- // Clear message after 3s
89
38
  setTimeout(() => setActionMessage(null), 3000);
90
39
  setViewMode('list');
91
40
  }
92
41
  };
42
+ // Sub-view component for Chat
43
+ if (viewMode === 'chat' && matches) {
44
+ return _jsx(Chat, { targetUsername: matches[selectedIndex].userId.username, onExit: () => setViewMode('list') });
45
+ }
46
+ // Manual input handling for switching views (since useListNavigation only handles index)
47
+ useInput((input, key) => {
48
+ if (viewMode === 'list') {
49
+ if (key.return && matches && matches.length > 0)
50
+ setViewMode('actions');
51
+ // Standard exit handling is tricky if we want to "Back" from actions.
52
+ // We can handle Esc here for 'actions' view as well?
53
+ // Ideally we'd use a unified key handler.
54
+ }
55
+ else if (viewMode === 'profile' && key.escape) {
56
+ setViewMode('list');
57
+ }
58
+ else if (viewMode === 'actions' && key.escape) {
59
+ setViewMode('list');
60
+ }
61
+ });
62
+ // Top level escape handler
63
+ useEscapeKey(() => {
64
+ if (viewMode !== 'list') {
65
+ setViewMode('list');
66
+ }
67
+ else {
68
+ // Exit app
69
+ process.exit(0);
70
+ }
71
+ });
93
72
  if (loading)
94
- return _jsx(Text, { children: "Finding your best matches..." });
73
+ return _jsx(Loader, { text: "Finding your best matches..." });
95
74
  if (error)
96
- return _jsxs(Text, { color: "red", children: ["Error: ", error] });
75
+ return _jsx(ErrorState, { error: error });
97
76
  // Empty state
98
- if (matches.length === 0) {
99
- return (_jsxs(Box, { borderStyle: "round", borderColor: "magenta", padding: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, color: "magenta", children: "\u2764\uFE0F Match Queue" }), _jsx(Text, { children: "No new matches found." }), _jsx(Text, { color: "gray", children: "Try updating your profile or filters!" }), _jsx(Text, { color: "gray", children: "Press ESC to exit." })] }));
77
+ if (!matches || matches.length === 0) {
78
+ return (_jsxs(Screen, { title: "Match Queue", borderColor: "magenta", children: [_jsx(Text, { children: "No new matches found." }), _jsx(Text, { color: "gray", children: "Try updating your profile or filters!" })] }));
100
79
  }
101
80
  const selectedMatch = matches[selectedIndex];
102
- // CHAT VIEW
103
- if (viewMode === 'chat') {
104
- return _jsx(Chat, { targetUsername: selectedMatch.userId.username, onExit: () => setViewMode('list') });
105
- }
106
- // PROFILE VIEW
107
81
  if (viewMode === 'profile') {
108
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", padding: 1, children: [_jsx(ProfileView, { username: selectedMatch.userId.username }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "Press ESC to return to matches" }) })] }));
82
+ return (_jsx(Screen, { title: `Profile: @${selectedMatch.userId.username}`, borderColor: "cyan", children: _jsx(ProfileView, { username: selectedMatch.userId.username }) }));
109
83
  }
110
- // LIST / ACTIONS VIEW
111
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "magenta", padding: 1, children: [_jsxs(Box, { flexDirection: "row", justifyContent: "space-between", children: [_jsx(Text, { bold: true, underline: true, color: "magenta", children: "\uD83D\uDC95 Your Top Matches" }), actionMessage && _jsx(Text, { bold: true, color: actionMessage.includes('Error') ? 'red' : 'green', children: actionMessage })] }), viewMode === 'actions' ? (_jsxs(Box, { flexDirection: "column", marginY: 1, borderStyle: "round", borderColor: "yellow", padding: 1, children: [_jsxs(Text, { bold: true, color: "yellow", children: ["Selected: @", selectedMatch.userId.username] }), _jsx(Text, { color: "gray", children: "Choose an action:" }), _jsx(SelectInput, { items: [
84
+ return (_jsxs(Screen, { title: "Your Top Matches", borderColor: "magenta", children: [actionMessage && _jsx(Text, { bold: true, color: actionMessage.includes('Error') ? 'red' : 'green', children: actionMessage }), viewMode === 'actions' ? (_jsxs(Box, { flexDirection: "column", marginY: 1, borderStyle: "round", borderColor: "yellow", padding: 1, children: [_jsxs(Text, { bold: true, color: "yellow", children: ["Selected: @", selectedMatch.userId.username] }), _jsx(SelectInput, { items: [
112
85
  { label: '📄 View Full Profile', value: 'view' },
113
86
  { label: '💬 Send Message (DM)', value: 'dm' },
114
87
  { label: '👋 Follow / Connect', value: 'follow' },
115
88
  { label: '⬅️ Back to List', value: 'back' }
116
- ], onSelect: handleActionSelect })] })) : (_jsxs(_Fragment, { children: [_jsx(Text, { color: "gray", children: "Use \u2191\u2193 arrows to navigate, ENTER to interact, ESC to exit" }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: matches.map((match, index) => (_jsxs(Box, { borderStyle: index === selectedIndex ? 'bold' : undefined, borderColor: index === selectedIndex ? 'cyan' : undefined, flexDirection: "column", paddingX: 1, marginY: 0, children: [_jsxs(Text, { children: [_jsxs(Text, { bold: true, color: "green", children: ["@", match.userId.username] }), _jsxs(Text, { color: "yellow", children: [" (", match.compatibilityPercentage, "% match)"] })] }), _jsx(Text, { children: match.fullName || 'No name' }), match.bio && _jsxs(Text, { italic: true, color: "gray", children: [match.bio.substring(0, 80), "..."] }), (match.city || match.country) && (_jsxs(Text, { color: "blue", children: ["\uD83D\uDCCD ", [match.city, match.country].filter(Boolean).join(', ')] })), _jsxs(Text, { color: "cyan", children: ["\uD83D\uDCBB ", match.stack?.slice(0, 3).join(', ') || 'N/A'] }), match.matchReasons && match.matchReasons.length > 0 && (_jsxs(Text, { color: "magenta", children: ["\uD83D\uDCA1 ", match.matchReasons[0]] }))] }, match.userId._id))) })] })), viewMode === 'list' && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "Select a user to Follow or DM" }) }))] }));
89
+ ], onSelect: handleActionSelect })] })) : (_jsx(DataList, { items: matches, selectedIndex: selectedIndex, renderItem: (match, isSelected) => (_jsxs(Box, { borderStyle: isSelected ? 'bold' : 'single', borderColor: isSelected ? 'cyan' : 'gray', flexDirection: "column", paddingX: 1, marginBottom: 1, children: [_jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Text, { bold: true, color: isSelected ? "green" : "white", children: ["@", match.userId.username] }), _jsxs(Text, { color: "yellow", children: [" ", match.compatibilityPercentage, "%"] })] }), _jsx(Text, { children: match.fullName }), _jsxs(Text, { color: "cyan", children: ["\uD83D\uDCBB ", match.stack.slice(0, 3).join(', ')] })] })) }))] }));
117
90
  };
118
91
  //# sourceMappingURL=MatchList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MatchList.js","sourceRoot":"","sources":["../../src/commands/MatchList.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MatchList.js","sourceRoot":"","sources":["../../src/commands/MatchList.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Presence.d.ts","sourceRoot":"","sources":["../../src/commands/Presence.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAKxC,UAAU,aAAa;IACnB,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAClD;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAmD5C,CAAC"}
1
+ {"version":3,"file":"Presence.d.ts","sourceRoot":"","sources":["../../src/commands/Presence.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAOxC,UAAU,aAAa;IACnB,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAClD;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAoD5C,CAAC"}
@@ -1,8 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React, { useState } from 'react';
3
- import { Box, Text, useApp } from 'ink';
3
+ import { Text } from 'ink';
4
4
  import api from '../api.js';
5
5
  import { useAuth } from '../context/index.js';
6
+ import { useApp } from 'ink';
7
+ import { Screen, Loader, ErrorState } from '../shared/components/index.js';
6
8
  export const Presence = ({ status }) => {
7
9
  const { exit } = useApp();
8
10
  const { isAuthenticated, isLoading: authLoading } = useAuth();
@@ -15,7 +17,8 @@ export const Presence = ({ status }) => {
15
17
  if (!isAuthenticated) {
16
18
  setError('Please login first using "hackmate auth login"');
17
19
  setLoading(false);
18
- setTimeout(() => exit(), 100);
20
+ // Don't auto-exit immediately on error if we want user to see it
21
+ // usually we let them see it then exit.
19
22
  return;
20
23
  }
21
24
  const updatePresence = async () => {
@@ -23,7 +26,7 @@ export const Presence = ({ status }) => {
23
26
  try {
24
27
  await api.put('/presence/status', { status });
25
28
  setSuccess(true);
26
- setTimeout(() => exit(), 1500); // Exit after showing success
29
+ setTimeout(() => exit(), 1500);
27
30
  }
28
31
  catch (err) {
29
32
  let msg = err.response?.data?.message || 'Failed to update presence';
@@ -31,7 +34,6 @@ export const Presence = ({ status }) => {
31
34
  msg = 'Please login first using "hackmate auth login"';
32
35
  }
33
36
  setError(msg);
34
- setTimeout(() => exit(), 100);
35
37
  }
36
38
  finally {
37
39
  setLoading(false);
@@ -40,13 +42,13 @@ export const Presence = ({ status }) => {
40
42
  updatePresence();
41
43
  }, [status, isAuthenticated, authLoading]);
42
44
  if (loading || authLoading)
43
- return _jsx(Text, { children: "Updating presence..." });
45
+ return _jsx(Loader, { text: "Updating presence..." });
44
46
  if (error)
45
- return _jsxs(Text, { color: "red", children: ["Error: ", error] });
47
+ return _jsx(ErrorState, { error: error });
46
48
  if (success) {
47
49
  const color = status === 'online' ? 'green' : status === 'away' ? 'yellow' : status === 'busy' ? 'red' : 'gray';
48
- return (_jsx(Box, { borderStyle: "round", borderColor: color, padding: 1, children: _jsxs(Text, { children: ["Presence updated to: ", _jsx(Text, { bold: true, color: color, children: status.toUpperCase() })] }) }));
50
+ return (_jsx(Screen, { title: "Presence Updated", borderColor: color, children: _jsxs(Text, { children: ["Status set to: ", _jsx(Text, { bold: true, color: color, children: status.toUpperCase() })] }) }));
49
51
  }
50
- return _jsx(Text, { children: "Processing..." });
52
+ return _jsx(Loader, { text: "Processing..." });
51
53
  };
52
54
  //# sourceMappingURL=Presence.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Presence.js","sourceRoot":"","sources":["../../src/commands/Presence.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Presence.js","sourceRoot":"","sources":["../../src/commands/Presence.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Privacy.d.ts","sourceRoot":"","sources":["../../src/commands/Privacy.tsx"],"names":[],"mappings":"AAYA,eAAO,MAAM,OAAO,+CA6CnB,CAAC"}
1
+ {"version":3,"file":"Privacy.d.ts","sourceRoot":"","sources":["../../src/commands/Privacy.tsx"],"names":[],"mappings":"AAaA,eAAO,MAAM,OAAO,+CA6CnB,CAAC"}
@@ -1,38 +1,23 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useEffect } from 'react';
3
- import { Box, Text, useInput, useApp } from 'ink';
4
- import api from '../api.js';
2
+ import { Box, Text } from 'ink';
3
+ import { useAsyncRequest } from '../shared/hooks/useAsyncRequest.js';
4
+ import { Screen, Loader, ErrorState } from '../shared/components/index.js';
5
+ import { useEscapeKey } from '../shared/hooks/useEscapeKey.js';
5
6
  export const Privacy = () => {
6
- const { exit } = useApp();
7
- const [settings, setSettings] = useState(null);
8
- const [loading, setLoading] = useState(true);
9
- const [error, setError] = useState(null);
10
- useInput((input, key) => {
11
- if (key.escape) {
12
- exit();
13
- }
14
- });
15
- useEffect(() => {
16
- const fetchSettings = async () => {
17
- try {
18
- const { data } = await api.get('/settings');
19
- setSettings(data.privacy);
20
- }
21
- catch (err) {
22
- setError(err.response?.data?.message || 'Failed to fetch settings');
23
- }
24
- finally {
25
- setLoading(false);
26
- }
27
- };
28
- fetchSettings();
29
- }, []);
7
+ useEscapeKey();
8
+ // Often settings are nested in a user object or at root. The previous code accessed `data.privacy`.
9
+ // We'll trust the previous logic's path: GET /settings -> data.privacy
10
+ // BUT useAsyncRequest returns `data` as the response body.
11
+ // So we might need to map it or verify the endpoint structure.
12
+ // Assuming /settings returns { privacy: ... } based on previous code.
13
+ const { data: responseData, loading, error } = useAsyncRequest('/settings');
14
+ const settings = responseData?.privacy;
30
15
  if (loading)
31
- return _jsx(Text, { children: "Loading privacy settings..." });
16
+ return _jsx(Loader, { text: "Loading privacy settings..." });
32
17
  if (error)
33
- return _jsxs(Text, { color: "red", children: ["Error: ", error] });
18
+ return _jsx(ErrorState, { error: error });
34
19
  if (!settings)
35
- return _jsx(Text, { children: "No settings found" });
36
- return (_jsxs(Box, { borderStyle: "round", borderColor: "yellow", padding: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, underline: true, color: "yellow", children: "\uD83D\uDD12 Privacy Settings" }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { children: ["Profile Visibility: ", _jsx(Text, { bold: true, color: "cyan", children: settings.profileVisibility })] }), _jsxs(Text, { children: ["Message Settings: ", _jsx(Text, { bold: true, color: "cyan", children: settings.messageSettings })] }), _jsxs(Text, { children: ["Show Online Status: ", _jsx(Text, { bold: true, color: "cyan", children: settings.showOnlineStatus ? 'Yes' : 'No' })] }), _jsxs(Text, { children: ["Allow Tagging: ", _jsx(Text, { bold: true, color: "cyan", children: settings.allowTagging ? 'Yes' : 'No' })] })] }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "gray", children: "Use 'hackmate settings' to modify these settings" }), _jsx(Text, { color: "gray", children: "Press ESC to exit" })] })] }));
20
+ return _jsx(ErrorState, { error: "No settings found." });
21
+ return (_jsx(Screen, { title: "Privacy Settings", borderColor: "yellow", children: _jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { justifyContent: "space-between", width: 40, children: [_jsx(Text, { children: "Profile Visibility:" }), _jsx(Text, { bold: true, color: "cyan", children: settings.profileVisibility })] }), _jsxs(Box, { justifyContent: "space-between", width: 40, children: [_jsx(Text, { children: "Message Settings:" }), _jsx(Text, { bold: true, color: "cyan", children: settings.messageSettings })] }), _jsxs(Box, { justifyContent: "space-between", width: 40, children: [_jsx(Text, { children: "Show Online Status:" }), _jsx(Text, { bold: true, color: "cyan", children: settings.showOnlineStatus ? 'Yes' : 'No' })] }), _jsxs(Box, { justifyContent: "space-between", width: 40, children: [_jsx(Text, { children: "Allow Tagging:" }), _jsx(Text, { bold: true, color: "cyan", children: settings.allowTagging ? 'Yes' : 'No' })] })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", italic: true, children: "Use 'hackmate settings' to modify these settings." }) })] }) }));
37
22
  };
38
23
  //# sourceMappingURL=Privacy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Privacy.js","sourceRoot":"","sources":["../../src/commands/Privacy.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Privacy.js","sourceRoot":"","sources":["../../src/commands/Privacy.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAS/D,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE;IACxB,YAAY,EAAE,CAAC;IAEf,oGAAoG;IACpG,uEAAuE;IACvE,2DAA2D;IAC3D,+DAA+D;IAC/D,sEAAsE;IACtE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,eAAe,CAAM,WAAW,CAAC,CAAC;IAEjF,MAAM,QAAQ,GAAG,YAAY,EAAE,OAA0B,CAAC;IAE1D,IAAI,OAAO;QAAE,OAAO,KAAC,MAAM,IAAC,IAAI,EAAC,6BAA6B,GAAG,CAAC;IAClE,IAAI,KAAK;QAAE,OAAO,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,GAAI,CAAC;IAC/C,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAC,UAAU,IAAC,KAAK,EAAC,oBAAoB,GAAG,CAAC;IAEhE,OAAO,CACH,KAAC,MAAM,IAAC,KAAK,EAAC,kBAAkB,EAAC,WAAW,EAAC,QAAQ,YACjD,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aAEnC,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACvC,MAAC,GAAG,IAAC,cAAc,EAAC,eAAe,EAAC,KAAK,EAAE,EAAE,aACzC,KAAC,IAAI,sCAA2B,EAChC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YAAE,QAAQ,CAAC,iBAAiB,GAAQ,IACzD,EACN,MAAC,GAAG,IAAC,cAAc,EAAC,eAAe,EAAC,KAAK,EAAE,EAAE,aACzC,KAAC,IAAI,oCAAyB,EAC9B,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YAAE,QAAQ,CAAC,eAAe,GAAQ,IACvD,EACN,MAAC,GAAG,IAAC,cAAc,EAAC,eAAe,EAAC,KAAK,EAAE,EAAE,aACzC,KAAC,IAAI,sCAA2B,EAChC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAQ,IACvE,EACN,MAAC,GAAG,IAAC,cAAc,EAAC,eAAe,EAAC,KAAK,EAAE,EAAE,aACzC,KAAC,IAAI,iCAAsB,EAC3B,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAQ,IACnE,IACJ,EAEN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACb,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,MAAM,wEAAyD,GAChF,IACJ,GACD,CACZ,CAAC;AACN,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Settings.d.ts","sourceRoot":"","sources":["../../src/commands/Settings.tsx"],"names":[],"mappings":"AAcA,eAAO,MAAM,QAAQ,+CA8CpB,CAAC"}
1
+ {"version":3,"file":"Settings.d.ts","sourceRoot":"","sources":["../../src/commands/Settings.tsx"],"names":[],"mappings":"AAgBA,eAAO,MAAM,QAAQ,+CAuDpB,CAAC"}
@@ -1,38 +1,20 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useEffect } from 'react';
3
- import { Box, Text, useInput, useApp } from 'ink';
4
- import api from '../api.js';
2
+ import { Box, Text } from 'ink';
3
+ import { useAsyncRequest } from '../shared/hooks/useAsyncRequest.js';
4
+ import { Screen, Loader, ErrorState } from '../shared/components/index.js';
5
+ import { useEscapeKey } from '../shared/hooks/useEscapeKey.js';
5
6
  export const Settings = () => {
6
- const { exit } = useApp();
7
- const [preferences, setPreferences] = useState(null);
8
- const [loading, setLoading] = useState(true);
9
- const [error, setError] = useState(null);
10
- useInput((input, key) => {
11
- if (key.escape) {
12
- exit();
13
- }
14
- });
15
- useEffect(() => {
16
- const fetchSettings = async () => {
17
- try {
18
- const { data } = await api.get('/settings');
19
- setPreferences(data.preferences);
20
- }
21
- catch (err) {
22
- setError(err.response?.data?.message || 'Failed to fetch preferences');
23
- }
24
- finally {
25
- setLoading(false);
26
- }
27
- };
28
- fetchSettings();
29
- }, []);
7
+ useEscapeKey();
8
+ // Assuming GET /settings returns structure { preferences: ... }
9
+ const { data: responseData, loading, error } = useAsyncRequest('/settings');
10
+ const preferences = responseData?.preferences;
30
11
  if (loading)
31
- return _jsx(Text, { children: "Loading preferences..." });
12
+ return _jsx(Loader, { text: "Loading preferences..." });
32
13
  if (error)
33
- return _jsxs(Text, { color: "red", children: ["Error: ", error] });
14
+ return _jsx(ErrorState, { error: error });
15
+ // If no preferences returned, show alert
34
16
  if (!preferences)
35
- return _jsx(Text, { children: "No preferences found" });
36
- return (_jsxs(Box, { borderStyle: "round", borderColor: "blue", padding: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, underline: true, color: "blue", children: "\u2699\uFE0F Preferences" }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "Press ESC to exit" }) }), _jsx(Text, { bold: true, children: "Notifications:" }), _jsxs(Text, { children: [" Email: ", _jsx(Text, { color: preferences.notifications.email ? 'green' : 'red', children: preferences.notifications.email ? 'Enabled' : 'Disabled' })] }), _jsxs(Text, { children: [" Push: ", _jsx(Text, { color: preferences.notifications.push ? 'green' : 'red', children: preferences.notifications.push ? 'Enabled' : 'Disabled' })] }), _jsxs(Text, { children: [" In-App: ", _jsx(Text, { color: preferences.notifications.inApp ? 'green' : 'red', children: preferences.notifications.inApp ? 'Enabled' : 'Disabled' })] }), _jsxs(Text, { children: ["Language: ", _jsx(Text, { bold: true, color: "cyan", children: preferences.language })] }), _jsxs(Text, { children: ["Timezone: ", _jsx(Text, { bold: true, color: "cyan", children: preferences.timezone })] })] })] }));
17
+ return _jsx(ErrorState, { error: "No preferences found." });
18
+ return (_jsx(Screen, { title: "Preferences", borderColor: "blue", children: _jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, underline: true, children: "Notifications" }) }), _jsxs(Box, { flexDirection: "column", marginLeft: 1, marginBottom: 1, children: [_jsxs(Box, { justifyContent: "space-between", width: 30, children: [_jsx(Text, { children: "Email:" }), _jsx(Text, { color: preferences.notifications.email ? 'green' : 'red', children: preferences.notifications.email ? 'Enabled' : 'Disabled' })] }), _jsxs(Box, { justifyContent: "space-between", width: 30, children: [_jsx(Text, { children: "Push:" }), _jsx(Text, { color: preferences.notifications.push ? 'green' : 'red', children: preferences.notifications.push ? 'Enabled' : 'Disabled' })] }), _jsxs(Box, { justifyContent: "space-between", width: 30, children: [_jsx(Text, { children: "In-App:" }), _jsx(Text, { color: preferences.notifications.inApp ? 'green' : 'red', children: preferences.notifications.inApp ? 'Enabled' : 'Disabled' })] })] }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, underline: true, children: "Localization" }) }), _jsxs(Box, { flexDirection: "column", marginLeft: 1, children: [_jsxs(Box, { justifyContent: "space-between", width: 30, children: [_jsx(Text, { children: "Language:" }), _jsx(Text, { bold: true, color: "cyan", children: preferences.language })] }), _jsxs(Box, { justifyContent: "space-between", width: 30, children: [_jsx(Text, { children: "Timezone:" }), _jsx(Text, { bold: true, color: "cyan", children: preferences.timezone })] })] })] }) }));
37
19
  };
38
20
  //# sourceMappingURL=Settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Settings.js","sourceRoot":"","sources":["../../src/commands/Settings.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Settings.js","sourceRoot":"","sources":["../../src/commands/Settings.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Stats.d.ts","sourceRoot":"","sources":["../../src/commands/Stats.tsx"],"names":[],"mappings":"AAcA,eAAO,MAAM,KAAK,+CA+CjB,CAAC"}
1
+ {"version":3,"file":"Stats.d.ts","sourceRoot":"","sources":["../../src/commands/Stats.tsx"],"names":[],"mappings":"AAgBA,eAAO,MAAM,KAAK,+CA8BjB,CAAC"}
@@ -1,38 +1,19 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useEffect } from 'react';
3
- import { Box, Text, useInput, useApp } from 'ink';
4
- import api from '../api.js';
2
+ import { Box, Text } from 'ink';
3
+ import { useAsyncRequest } from '../shared/hooks/useAsyncRequest.js';
4
+ import { Screen, Loader, ErrorState } from '../shared/components/index.js';
5
+ import { useEscapeKey } from '../shared/hooks/useEscapeKey.js';
5
6
  export const Stats = () => {
6
- const { exit } = useApp();
7
- const [stats, setStats] = useState(null);
8
- const [loading, setLoading] = useState(true);
9
- const [error, setError] = useState(null);
10
- useInput((input, key) => {
11
- if (key.escape) {
12
- exit();
13
- }
14
- });
15
- useEffect(() => {
16
- const fetchStats = async () => {
17
- try {
18
- const { data } = await api.get('/profile/stats');
19
- setStats(data);
20
- }
21
- catch (err) {
22
- setError(err.response?.data?.message || 'Failed to fetch stats');
23
- }
24
- finally {
25
- setLoading(false);
26
- }
27
- };
28
- fetchStats();
29
- }, []);
7
+ // Standard exit handler
8
+ useEscapeKey();
9
+ const { data: stats, loading, error } = useAsyncRequest('/profile/stats');
30
10
  if (loading)
31
- return _jsx(Text, { children: "Loading stats..." });
11
+ return _jsx(Loader, { text: "Calculating your stats..." });
32
12
  if (error)
33
- return _jsxs(Text, { color: "red", children: ["Error: ", error] });
13
+ return _jsx(ErrorState, { error: error });
14
+ // Fallback if data is null/missing (unlikely with successful req but good practice)
34
15
  if (!stats)
35
- return _jsx(Text, { color: "yellow", children: "No stats available" });
36
- return (_jsxs(Box, { borderStyle: "round", borderColor: "blue", padding: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, underline: true, color: "cyan", children: "\uD83D\uDCCA Your Stats" }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { children: ["\uD83D\uDD25 Streak: ", _jsxs(Text, { bold: true, color: "yellow", children: [stats.streak, " days"] })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "Press ESC to exit" }) }), _jsxs(Text, { children: ["\uD83D\uDCAC Messages Sent: ", _jsx(Text, { bold: true, color: "green", children: stats.messagesCount })] }), _jsxs(Text, { children: ["\uD83D\uDC41\uFE0F Profile Views: ", _jsx(Text, { bold: true, color: "blue", children: stats.profileViews })] }), _jsxs(Text, { children: ["\uD83E\uDD1D Connections: ", _jsx(Text, { bold: true, color: "magenta", children: stats.connectionsCount })] }), _jsxs(Text, { children: ["\uD83D\uDE80 Projects: ", _jsx(Text, { bold: true, color: "cyan", children: stats.projectsCount })] }), _jsxs(Text, { children: ["\uD83D\uDC65 Groups: ", _jsx(Text, { bold: true, color: "yellow", children: stats.groupsCount })] }), _jsxs(Text, { children: ["\u2B50 Reputation: ", _jsxs(Text, { bold: true, color: "green", children: [stats.reputation, "+"] })] })] })] }));
16
+ return _jsx(ErrorState, { error: "No stats data returned." });
17
+ return (_jsx(Screen, { title: "Your Stats", borderColor: "cyan", children: _jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Box, { borderStyle: "single", borderColor: "magenta", paddingX: 1, marginBottom: 1, justifyContent: "center", children: _jsxs(Text, { children: ["\uD83D\uDD25 Streak: ", _jsxs(Text, { bold: true, color: "yellow", children: [stats.streak, " days"] })] }) }), _jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: ["\u2B50 Reputation: ", _jsxs(Text, { bold: true, color: "green", children: [stats.reputation, "+"] })] }), _jsxs(Text, { children: ["\uD83D\uDC41\uFE0F Profile Views: ", _jsx(Text, { bold: true, color: "blue", children: stats.profileViews })] }), _jsxs(Text, { children: ["\uD83E\uDD1D Connections: ", _jsx(Text, { bold: true, color: "magenta", children: stats.connectionsCount })] }), _jsxs(Text, { children: ["\uD83D\uDCAC Messages Sent: ", _jsx(Text, { bold: true, color: "green", children: stats.messagesCount })] }), _jsxs(Text, { children: ["\uD83D\uDE80 Projects: ", _jsx(Text, { bold: true, color: "cyan", children: stats.projectsCount })] }), _jsxs(Text, { children: ["\uD83D\uDC65 Groups: ", _jsx(Text, { bold: true, color: "yellow", children: stats.groupsCount })] })] })] }) }));
37
18
  };
38
19
  //# sourceMappingURL=Stats.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Stats.js","sourceRoot":"","sources":["../../src/commands/Stats.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Stats.js","sourceRoot":"","sources":["../../src/commands/Stats.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAY/D,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE;IACtB,wBAAwB;IACxB,YAAY,EAAE,CAAC;IAEf,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,eAAe,CAAY,gBAAgB,CAAC,CAAC;IAErF,IAAI,OAAO;QAAE,OAAO,KAAC,MAAM,IAAC,IAAI,EAAC,2BAA2B,GAAG,CAAC;IAChE,IAAI,KAAK;QAAE,OAAO,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,GAAI,CAAC;IAE/C,oFAAoF;IACpF,IAAI,CAAC,KAAK;QAAE,OAAO,KAAC,UAAU,IAAC,KAAK,EAAC,yBAAyB,GAAG,CAAC;IAElE,OAAO,CACH,KAAC,MAAM,IAAC,KAAK,EAAC,YAAY,EAAC,WAAW,EAAC,MAAM,YACzC,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACnC,KAAC,GAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,SAAS,EAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,cAAc,EAAC,QAAQ,YACjG,MAAC,IAAI,wCAAY,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,QAAQ,aAAE,KAAK,CAAC,MAAM,aAAa,IAAO,GAC1E,EAEN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACvB,MAAC,IAAI,wCAAiB,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,aAAE,KAAK,CAAC,UAAU,SAAS,IAAO,EAChF,MAAC,IAAI,sDAAqB,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YAAE,KAAK,CAAC,YAAY,GAAQ,IAAO,EACpF,MAAC,IAAI,+CAAmB,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,SAAS,YAAE,KAAK,CAAC,gBAAgB,GAAQ,IAAO,EACzF,MAAC,IAAI,+CAAmB,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,YAAE,KAAK,CAAC,aAAa,GAAQ,IAAO,EACpF,MAAC,IAAI,+CAAmB,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YAAE,KAAK,CAAC,aAAa,GAAQ,IAAO,EACnF,MAAC,IAAI,+CAAmB,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,QAAQ,YAAE,KAAK,CAAC,WAAW,GAAQ,IAAO,IACjF,IACJ,GACD,CACZ,CAAC;AACN,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatList.d.ts","sourceRoot":"","sources":["../../../../src/features/chat/components/ChatList.tsx"],"names":[],"mappings":"AAkBA,eAAO,MAAM,QAAQ,+CAkFpB,CAAC"}
1
+ {"version":3,"file":"ChatList.d.ts","sourceRoot":"","sources":["../../../../src/features/chat/components/ChatList.tsx"],"names":[],"mappings":"AAmBA,eAAO,MAAM,QAAQ,+CAgEpB,CAAC"}