hackmate-cli 1.1.0 → 1.1.2
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.
- package/dist/Dashboard.js +4 -4
- package/dist/Dashboard.js.map +1 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +10 -0
- package/dist/api.js.map +1 -1
- package/dist/cli.js +11 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/Discover.d.ts +5 -1
- package/dist/commands/Discover.d.ts.map +1 -1
- package/dist/commands/Discover.js +12 -6
- package/dist/commands/Discover.js.map +1 -1
- package/dist/commands/MatchList.d.ts +5 -1
- package/dist/commands/MatchList.d.ts.map +1 -1
- package/dist/commands/MatchList.js +16 -8
- package/dist/commands/MatchList.js.map +1 -1
- package/dist/commands/auth/auth.logic.d.ts.map +1 -1
- package/dist/commands/auth/auth.logic.js +30 -14
- package/dist/commands/auth/auth.logic.js.map +1 -1
- package/dist/commands/auth/login.screen.d.ts.map +1 -1
- package/dist/commands/auth/login.screen.js +4 -1
- package/dist/commands/auth/login.screen.js.map +1 -1
- package/dist/commands/auth/verify.logic.js +1 -1
- package/dist/commands/auth/verify.logic.js.map +1 -1
- package/dist/config.d.ts +3 -8
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/context/AuthContext.d.ts +1 -4
- package/dist/context/AuthContext.d.ts.map +1 -1
- package/dist/context/AuthContext.js +18 -2
- package/dist/context/AuthContext.js.map +1 -1
- package/dist/features/admin/hooks/useAdmin.js +1 -1
- package/dist/features/chat/components/ChatList.d.ts +3 -1
- package/dist/features/chat/components/ChatList.d.ts.map +1 -1
- package/dist/features/chat/components/ChatList.js +7 -2
- package/dist/features/chat/components/ChatList.js.map +1 -1
- package/dist/features/chat/hooks/useChat.d.ts.map +1 -1
- package/dist/features/chat/hooks/useChat.js +26 -20
- package/dist/features/chat/hooks/useChat.js.map +1 -1
- package/dist/features/group/hooks/useGroup.js +1 -1
- package/dist/features/network/hooks/useNetwork.js +1 -1
- package/dist/features/notification/hooks/useNotification.js +1 -1
- package/dist/features/profile/components/index.d.ts +1 -0
- package/dist/features/profile/components/index.d.ts.map +1 -1
- package/dist/features/profile/components/index.js +16 -8
- package/dist/features/profile/components/index.js.map +1 -1
- package/dist/features/profile/hooks/useProfile.d.ts +13 -4
- package/dist/features/profile/hooks/useProfile.d.ts.map +1 -1
- package/dist/features/profile/hooks/useProfile.js +34 -36
- package/dist/features/profile/hooks/useProfile.js.map +1 -1
- package/dist/features/project/hooks/useProject.js +2 -2
- package/dist/features/project/hooks/useProject.js.map +1 -1
- package/dist/services/auth.service.d.ts +14 -0
- package/dist/services/auth.service.d.ts.map +1 -0
- package/dist/services/auth.service.js +19 -0
- package/dist/services/auth.service.js.map +1 -0
- package/dist/services/chat.service.d.ts +14 -0
- package/dist/services/chat.service.d.ts.map +1 -0
- package/dist/services/chat.service.js +22 -0
- package/dist/services/chat.service.js.map +1 -0
- package/dist/services/match.service.d.ts +20 -0
- package/dist/services/match.service.d.ts.map +1 -0
- package/dist/services/match.service.js +28 -0
- package/dist/services/match.service.js.map +1 -0
- package/dist/services/network.service.d.ts +4 -0
- package/dist/services/network.service.d.ts.map +1 -0
- package/dist/services/network.service.js +8 -0
- package/dist/services/network.service.js.map +1 -0
- package/dist/services/user.service.d.ts +7 -0
- package/dist/services/user.service.d.ts.map +1 -0
- package/dist/services/user.service.js +17 -0
- package/dist/services/user.service.js.map +1 -0
- package/dist/shared/hooks/useAsyncRequest.d.ts +1 -1
- package/dist/shared/hooks/useAsyncRequest.d.ts.map +1 -1
- package/dist/shared/hooks/useAsyncRequest.js +15 -11
- package/dist/shared/hooks/useAsyncRequest.js.map +1 -1
- package/dist/tests/Dashboard.test.d.ts +2 -0
- package/dist/tests/Dashboard.test.d.ts.map +1 -0
- package/dist/tests/Dashboard.test.js +30 -0
- package/dist/tests/Dashboard.test.js.map +1 -0
- package/dist/types/index.d.ts +36 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +16 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatList.d.ts","sourceRoot":"","sources":["../../../../src/features/chat/components/ChatList.tsx"],"names":[],"mappings":"AAmBA,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"file":"ChatList.d.ts","sourceRoot":"","sources":["../../../../src/features/chat/components/ChatList.tsx"],"names":[],"mappings":"AAmBA,eAAO,MAAM,QAAQ,GAAI,YAAY;IAAE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,4CAoE3D,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { useListNavigation } from '../../../shared/hooks/useListNavigation.js';
|
|
|
6
6
|
import { Screen, Loader, ErrorState, DataList } from '../../../shared/components/index.js';
|
|
7
7
|
import { useChatLogic } from '../hooks/useChat.js';
|
|
8
8
|
import { ChatScreen } from './chat.screen.js';
|
|
9
|
-
export const ChatList = () => {
|
|
9
|
+
export const ChatList = ({ onBack }) => {
|
|
10
10
|
const { exit } = useApp();
|
|
11
11
|
const [activeChatUser, setActiveChatUser] = useState(null);
|
|
12
12
|
// Only fetch if we are in list mode
|
|
@@ -18,7 +18,12 @@ export const ChatList = () => {
|
|
|
18
18
|
if (activeChatUser)
|
|
19
19
|
return; // Child component handles input
|
|
20
20
|
if (key.escape) {
|
|
21
|
-
|
|
21
|
+
if (onBack) {
|
|
22
|
+
onBack();
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
exit();
|
|
26
|
+
}
|
|
22
27
|
}
|
|
23
28
|
if (key.return && conversations && conversations.length > 0) {
|
|
24
29
|
setActiveChatUser(conversations[selectedIndex].user.username);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatList.js","sourceRoot":"","sources":["../../../../src/features/chat/components/ChatList.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAa9C,MAAM,CAAC,MAAM,QAAQ,GAAG,
|
|
1
|
+
{"version":3,"file":"ChatList.js","sourceRoot":"","sources":["../../../../src/features/chat/components/ChatList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChat.d.ts","sourceRoot":"","sources":["../../../../src/features/chat/hooks/useChat.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useChat.d.ts","sourceRoot":"","sources":["../../../../src/features/chat/hooks/useChat.ts"],"names":[],"mappings":"AAOA,UAAU,iBAAiB;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,eAAO,MAAM,YAAY,GAAI,uCAAuC,iBAAiB;;;;;;;CA6JpF,CAAC"}
|
|
@@ -2,6 +2,8 @@ import { useState, useEffect } from 'react';
|
|
|
2
2
|
import { useApp } from 'ink';
|
|
3
3
|
import api from '../../../api.js';
|
|
4
4
|
import { useSocket, useAuth } from '../../../context/index.js';
|
|
5
|
+
import { ChatService } from '../../../services/chat.service.js';
|
|
6
|
+
import { UserService } from '../../../services/user.service.js';
|
|
5
7
|
export const useChatLogic = ({ targetUsername, groupName, onExit }) => {
|
|
6
8
|
const { exit: appExit } = useApp();
|
|
7
9
|
const exit = onExit || appExit;
|
|
@@ -19,8 +21,8 @@ export const useChatLogic = ({ targetUsername, groupName, onExit }) => {
|
|
|
19
21
|
const username = typeof senderIdObj === 'object' ? senderIdObj.username : undefined;
|
|
20
22
|
return {
|
|
21
23
|
...msg,
|
|
22
|
-
senderId: senderId === user?.
|
|
23
|
-
username: username
|
|
24
|
+
senderId: senderId === user?._id ? 'me' : senderId,
|
|
25
|
+
username: username,
|
|
24
26
|
};
|
|
25
27
|
};
|
|
26
28
|
useEffect(() => {
|
|
@@ -31,17 +33,21 @@ export const useChatLogic = ({ targetUsername, groupName, onExit }) => {
|
|
|
31
33
|
// Check if chatting with yourself
|
|
32
34
|
if (targetUsername === user?.username) {
|
|
33
35
|
setStatus(`📝 Note: You're chatting with yourself`);
|
|
34
|
-
setTargetId(user.
|
|
35
|
-
const hist = await
|
|
36
|
-
setMessages(hist.
|
|
36
|
+
setTargetId(user._id);
|
|
37
|
+
const hist = await ChatService.getHistory(user._id);
|
|
38
|
+
setMessages(hist.map(formatMessage));
|
|
37
39
|
return;
|
|
38
40
|
}
|
|
39
41
|
setStatus(`Looking for @${targetUsername}...`);
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
+
const profileWrapper = await UserService.getProfile(targetUsername);
|
|
43
|
+
// ProfileWrapper has user which can be string or User.
|
|
44
|
+
// We assume it's populated User object
|
|
45
|
+
const targetUser = profileWrapper.user;
|
|
46
|
+
// TODO: Fix Profile type to be generic or strict about population
|
|
47
|
+
setTargetId(targetUser._id);
|
|
42
48
|
setStatus(`talking to @${targetUsername}`);
|
|
43
|
-
const hist = await
|
|
44
|
-
setMessages(hist.
|
|
49
|
+
const hist = await ChatService.getHistory(targetUser._id);
|
|
50
|
+
setMessages(hist.map(formatMessage));
|
|
45
51
|
}
|
|
46
52
|
else if (groupName) {
|
|
47
53
|
setStatus(`Looking for group ${groupName}...`);
|
|
@@ -53,8 +59,8 @@ export const useChatLogic = ({ targetUsername, groupName, onExit }) => {
|
|
|
53
59
|
}
|
|
54
60
|
setGroupId(group._id);
|
|
55
61
|
setStatus(`talking in #${groupName}`);
|
|
56
|
-
const hist = await
|
|
57
|
-
setMessages(hist.
|
|
62
|
+
const hist = await ChatService.getGroupHistory(group._id);
|
|
63
|
+
setMessages(hist.map(formatMessage));
|
|
58
64
|
}
|
|
59
65
|
if (!isConnected || !socket) {
|
|
60
66
|
if (targetUsername) {
|
|
@@ -87,26 +93,26 @@ export const useChatLogic = ({ targetUsername, groupName, onExit }) => {
|
|
|
87
93
|
};
|
|
88
94
|
if (user)
|
|
89
95
|
init();
|
|
90
|
-
}, [targetUsername, groupName, groupId, isConnected, socket, user?.
|
|
96
|
+
}, [targetUsername, groupName, groupId, isConnected, socket, user?._id]);
|
|
91
97
|
useEffect(() => {
|
|
92
98
|
if (!socket)
|
|
93
99
|
return;
|
|
94
100
|
const onDmReceive = (msg) => {
|
|
95
101
|
const incomingSenderId = typeof msg.senderId === 'object' ? msg.senderId._id : msg.senderId;
|
|
96
102
|
// Skip if this is from me (optimistic update already added it)
|
|
97
|
-
if (incomingSenderId === user?.
|
|
103
|
+
if (incomingSenderId === user?._id)
|
|
98
104
|
return;
|
|
99
105
|
// If I am chatting with targetId, and incoming message is FROM targetId
|
|
100
106
|
if (targetId && incomingSenderId === targetId) {
|
|
101
|
-
setMessages(prev => [...prev, formatMessage(msg)]);
|
|
107
|
+
setMessages((prev) => [...prev, formatMessage(msg)]);
|
|
102
108
|
}
|
|
103
109
|
};
|
|
104
110
|
const onGroupReceive = (msg) => {
|
|
105
111
|
if (groupId && msg.groupId === groupId) {
|
|
106
112
|
// Check if it's not from me (optimistic update handles "me")
|
|
107
113
|
const incomingSenderId = typeof msg.senderId === 'object' ? msg.senderId._id : msg.senderId;
|
|
108
|
-
if (incomingSenderId !== user?.
|
|
109
|
-
setMessages(prev => [...prev, formatMessage(msg)]);
|
|
114
|
+
if (incomingSenderId !== user?._id) {
|
|
115
|
+
setMessages((prev) => [...prev, formatMessage(msg)]);
|
|
110
116
|
}
|
|
111
117
|
}
|
|
112
118
|
};
|
|
@@ -122,7 +128,7 @@ export const useChatLogic = ({ targetUsername, groupName, onExit }) => {
|
|
|
122
128
|
socket.off('group:receive', onGroupReceive);
|
|
123
129
|
socket.off('connect');
|
|
124
130
|
};
|
|
125
|
-
}, [socket, targetId, groupId, user?.
|
|
131
|
+
}, [socket, targetId, groupId, user?._id]);
|
|
126
132
|
const handleSend = async () => {
|
|
127
133
|
if (!input.trim())
|
|
128
134
|
return;
|
|
@@ -130,11 +136,11 @@ export const useChatLogic = ({ targetUsername, groupName, onExit }) => {
|
|
|
130
136
|
return;
|
|
131
137
|
if (targetId) {
|
|
132
138
|
socket.emit('message', { to: targetId, content: input });
|
|
133
|
-
setMessages(prev => [...prev, { content: input, senderId: 'me', createdAt: new Date() }]);
|
|
139
|
+
setMessages((prev) => [...prev, { content: input, senderId: 'me', createdAt: new Date() }]);
|
|
134
140
|
}
|
|
135
141
|
else if (groupId) {
|
|
136
142
|
socket.emit('message', { groupId: groupId, content: input });
|
|
137
|
-
setMessages(prev => [...prev, { content: input, senderId: 'me', createdAt: new Date() }]);
|
|
143
|
+
setMessages((prev) => [...prev, { content: input, senderId: 'me', createdAt: new Date() }]);
|
|
138
144
|
}
|
|
139
145
|
setInput('');
|
|
140
146
|
};
|
|
@@ -144,7 +150,7 @@ export const useChatLogic = ({ targetUsername, groupName, onExit }) => {
|
|
|
144
150
|
setInput,
|
|
145
151
|
status,
|
|
146
152
|
handleSend,
|
|
147
|
-
exit
|
|
153
|
+
exit,
|
|
148
154
|
};
|
|
149
155
|
};
|
|
150
156
|
//# sourceMappingURL=useChat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChat.js","sourceRoot":"","sources":["../../../../src/features/chat/hooks/useChat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"useChat.js","sourceRoot":"","sources":["../../../../src/features/chat/hooks/useChat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/profile/components/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAMxC,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/profile/components/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAMxC,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,CA6C5E,CAAC;AAEF,eAAO,MAAM,WAAW,+CAuFvB,CAAC"}
|
|
@@ -4,33 +4,41 @@ import { useInput, useApp } from 'ink';
|
|
|
4
4
|
import { useProfileViewLogic } from '../hooks/useProfile.js';
|
|
5
5
|
import { ProfileViewScreen } from './profile-view.screen.js';
|
|
6
6
|
import { ProfileEditV3 } from './profile-edit-v3.screen.js';
|
|
7
|
-
export const ProfileView = ({ username }) => {
|
|
7
|
+
export const ProfileView = ({ username, onBack }) => {
|
|
8
8
|
const { exit } = useApp();
|
|
9
9
|
const logic = useProfileViewLogic(username);
|
|
10
10
|
const [stackPage, setStackPage] = useState(0);
|
|
11
11
|
const [interestsPage, setInterestsPage] = useState(0);
|
|
12
12
|
useInput((input, key) => {
|
|
13
13
|
if (key.escape) {
|
|
14
|
-
|
|
14
|
+
if (onBack) {
|
|
15
|
+
onBack();
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
exit();
|
|
19
|
+
}
|
|
15
20
|
return;
|
|
16
21
|
}
|
|
17
22
|
// Stack pagination: S = previous, M = next
|
|
18
|
-
|
|
23
|
+
// Use default 0 to satisfy TS strict checks
|
|
24
|
+
const stackLen = logic.profile?.stack?.length || 0;
|
|
25
|
+
if ((input === 's' || input === 'S') && stackLen > 10) {
|
|
19
26
|
setStackPage(prev => Math.max(0, prev - 1));
|
|
20
27
|
return;
|
|
21
28
|
}
|
|
22
|
-
if ((input === 'm' || input === 'M') &&
|
|
23
|
-
const maxPage = Math.ceil(
|
|
29
|
+
if ((input === 'm' || input === 'M') && stackLen > 10) {
|
|
30
|
+
const maxPage = Math.ceil(stackLen / 10) - 1;
|
|
24
31
|
setStackPage(prev => Math.min(maxPage, prev + 1));
|
|
25
32
|
return;
|
|
26
33
|
}
|
|
27
34
|
// Interests pagination: I = previous, N = next
|
|
28
|
-
|
|
35
|
+
const interestsLen = logic.profile?.interests?.length || 0;
|
|
36
|
+
if ((input === 'i' || input === 'I') && interestsLen > 10) {
|
|
29
37
|
setInterestsPage(prev => Math.max(0, prev - 1));
|
|
30
38
|
return;
|
|
31
39
|
}
|
|
32
|
-
if ((input === 'n' || input === 'N') &&
|
|
33
|
-
const maxPage = Math.ceil(
|
|
40
|
+
if ((input === 'n' || input === 'N') && interestsLen > 10) {
|
|
41
|
+
const maxPage = Math.ceil(interestsLen / 10) - 1;
|
|
34
42
|
setInterestsPage(prev => Math.min(maxPage, prev + 1));
|
|
35
43
|
return;
|
|
36
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/features/profile/components/index.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,MAAM,CAAC,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/features/profile/components/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,24 @@
|
|
|
1
|
+
import { Profile } from '../../../types/index.js';
|
|
1
2
|
export declare const useProfileViewLogic: (targetUsername?: string) => {
|
|
2
|
-
profile:
|
|
3
|
+
profile: Profile | null;
|
|
3
4
|
loading: boolean;
|
|
4
5
|
error: string | null;
|
|
5
|
-
user: import("../../../
|
|
6
|
+
user: import("../../../types/index.js").User | null;
|
|
6
7
|
};
|
|
8
|
+
interface ProfileFormValues extends Omit<Profile, 'stack' | 'interests' | 'hobbies' | 'interestedIn' | 'dateOfBirth'> {
|
|
9
|
+
stack: string;
|
|
10
|
+
interests: string;
|
|
11
|
+
hobbies: string;
|
|
12
|
+
interestedIn: string;
|
|
13
|
+
dateOfBirth: string;
|
|
14
|
+
}
|
|
7
15
|
export declare const useProfileEditLogic: () => {
|
|
8
|
-
profile:
|
|
9
|
-
setProfile: import("react").Dispatch<
|
|
16
|
+
profile: Partial<ProfileFormValues>;
|
|
17
|
+
setProfile: import("react").Dispatch<import("react").SetStateAction<Partial<ProfileFormValues>>>;
|
|
10
18
|
loading: boolean;
|
|
11
19
|
authError: string | null;
|
|
12
20
|
handleSubmit: () => Promise<void>;
|
|
13
21
|
authLoading: boolean;
|
|
14
22
|
};
|
|
23
|
+
export {};
|
|
15
24
|
//# sourceMappingURL=useProfile.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProfile.d.ts","sourceRoot":"","sources":["../../../../src/features/profile/hooks/useProfile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useProfile.d.ts","sourceRoot":"","sources":["../../../../src/features/profile/hooks/useProfile.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,eAAO,MAAM,mBAAmB,GAAI,iBAAiB,MAAM;;;;;CAwC1D,CAAC;AAEF,UAAU,iBAAkB,SAAQ,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,cAAc,GAAG,aAAa,CAAC;IACjH,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,mBAAmB;;;;;;;CAuG/B,CAAC"}
|
|
@@ -1,19 +1,12 @@
|
|
|
1
1
|
import { useState, useEffect } from 'react';
|
|
2
|
-
import { useApp
|
|
3
|
-
import api from '../../../api.js';
|
|
2
|
+
import { useApp } from 'ink';
|
|
4
3
|
import { useAuth } from '../../../context/index.js';
|
|
4
|
+
import { UserService } from '../../../services/user.service.js';
|
|
5
5
|
export const useProfileViewLogic = (targetUsername) => {
|
|
6
|
-
const { exit } = useApp();
|
|
7
6
|
const { user, isAuthenticated, isLoading: authLoading } = useAuth();
|
|
8
7
|
const [profile, setProfile] = useState(null);
|
|
9
8
|
const [loading, setLoading] = useState(true);
|
|
10
9
|
const [error, setError] = useState(null);
|
|
11
|
-
useInput((input, key) => {
|
|
12
|
-
if (key.escape) {
|
|
13
|
-
exit();
|
|
14
|
-
process.exit(0);
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
10
|
useEffect(() => {
|
|
18
11
|
if (authLoading)
|
|
19
12
|
return;
|
|
@@ -21,22 +14,20 @@ export const useProfileViewLogic = (targetUsername) => {
|
|
|
21
14
|
if (!targetUsername && !isAuthenticated) {
|
|
22
15
|
setError('Please login first using "hackmate auth login"');
|
|
23
16
|
setLoading(false);
|
|
24
|
-
setTimeout(() => exit(), 100);
|
|
25
17
|
return;
|
|
26
18
|
}
|
|
27
19
|
try {
|
|
28
|
-
const
|
|
29
|
-
const { data } = await api.get(endpoint);
|
|
20
|
+
const data = await UserService.getProfile(targetUsername);
|
|
30
21
|
setProfile(data);
|
|
31
|
-
// Removed auto-exit to keep view open
|
|
32
22
|
}
|
|
33
23
|
catch (err) {
|
|
24
|
+
// If it's 404, maybe UserService throws specific error?
|
|
25
|
+
// For now, catch generic.
|
|
34
26
|
let msg = err.response?.data?.message || 'Failed to fetch profile';
|
|
35
27
|
if (msg.includes('No Authorization')) {
|
|
36
28
|
msg = 'Please login first using "hackmate auth login"';
|
|
37
29
|
}
|
|
38
30
|
setError(msg);
|
|
39
|
-
setTimeout(() => exit(), 100);
|
|
40
31
|
}
|
|
41
32
|
finally {
|
|
42
33
|
setLoading(false);
|
|
@@ -48,7 +39,7 @@ export const useProfileViewLogic = (targetUsername) => {
|
|
|
48
39
|
profile,
|
|
49
40
|
loading: loading || authLoading,
|
|
50
41
|
error,
|
|
51
|
-
user
|
|
42
|
+
user,
|
|
52
43
|
};
|
|
53
44
|
};
|
|
54
45
|
export const useProfileEditLogic = () => {
|
|
@@ -73,21 +64,26 @@ export const useProfileEditLogic = () => {
|
|
|
73
64
|
}
|
|
74
65
|
const fetchProfile = async () => {
|
|
75
66
|
try {
|
|
76
|
-
const
|
|
67
|
+
const data = await UserService.getProfile();
|
|
77
68
|
// Pre-process data for UI (arrays to strings)
|
|
78
69
|
const processed = { ...data };
|
|
79
70
|
if (Array.isArray(data.stack))
|
|
80
71
|
processed.stack = data.stack.join(', ');
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
72
|
+
// hmmm, Profile type has string[] for stack but our state here assumes string for editing?
|
|
73
|
+
// Yes, initialized as string in state.
|
|
74
|
+
// We need to match the type expected by state, which is 'any' currently or defined object.
|
|
75
|
+
// Let's cast to any for now to facilitate the transformation logic until we strictly type the edit state.
|
|
76
|
+
const anyData = data;
|
|
77
|
+
if (Array.isArray(anyData.hobbies))
|
|
78
|
+
processed.hobbies = anyData.hobbies.join(', ');
|
|
79
|
+
if (Array.isArray(anyData.interests))
|
|
80
|
+
processed.interests = anyData.interests.join(', ');
|
|
81
|
+
if (Array.isArray(anyData.interestedIn))
|
|
82
|
+
processed.interestedIn = anyData.interestedIn.join(', ');
|
|
87
83
|
// Format Date of Birth to YYYY-MM-DD for editing
|
|
88
|
-
if (
|
|
84
|
+
if (anyData.dateOfBirth) {
|
|
89
85
|
try {
|
|
90
|
-
processed.dateOfBirth = new Date(
|
|
86
|
+
processed.dateOfBirth = new Date(anyData.dateOfBirth).toISOString().split('T')[0];
|
|
91
87
|
}
|
|
92
88
|
catch (e) {
|
|
93
89
|
processed.dateOfBirth = '';
|
|
@@ -110,24 +106,25 @@ export const useProfileEditLogic = () => {
|
|
|
110
106
|
};
|
|
111
107
|
// Convert comma-separated strings to arrays
|
|
112
108
|
if (profile.stack && typeof profile.stack === 'string') {
|
|
113
|
-
payload.stack = profile.stack
|
|
109
|
+
payload.stack = profile.stack
|
|
110
|
+
.split(',')
|
|
111
|
+
.map((s) => s.trim())
|
|
112
|
+
.filter(Boolean);
|
|
114
113
|
}
|
|
115
114
|
if (profile.interests && typeof profile.interests === 'string') {
|
|
116
|
-
payload.interests = profile.interests
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
}
|
|
121
|
-
if (profile.interestedIn && typeof profile.interestedIn === 'string') {
|
|
122
|
-
payload.interestedIn = profile.interestedIn.split(',').map((s) => s.trim()).filter(Boolean);
|
|
115
|
+
payload.interests = profile.interests
|
|
116
|
+
.split(',')
|
|
117
|
+
.map((s) => s.trim())
|
|
118
|
+
.filter(Boolean);
|
|
123
119
|
}
|
|
120
|
+
// Add other fields...
|
|
124
121
|
// Remove empty strings and undefined values
|
|
125
|
-
Object.keys(payload).forEach(key => {
|
|
122
|
+
Object.keys(payload).forEach((key) => {
|
|
126
123
|
if (payload[key] === '' || payload[key] === undefined) {
|
|
127
124
|
delete payload[key];
|
|
128
125
|
}
|
|
129
126
|
});
|
|
130
|
-
await
|
|
127
|
+
await UserService.updateProfile(payload);
|
|
131
128
|
console.log('✅ Profile updated!');
|
|
132
129
|
exit();
|
|
133
130
|
}
|
|
@@ -137,11 +134,12 @@ export const useProfileEditLogic = () => {
|
|
|
137
134
|
}
|
|
138
135
|
};
|
|
139
136
|
return {
|
|
140
|
-
profile,
|
|
137
|
+
profile,
|
|
138
|
+
setProfile,
|
|
141
139
|
loading,
|
|
142
140
|
authError,
|
|
143
141
|
handleSubmit,
|
|
144
|
-
authLoading
|
|
142
|
+
authLoading,
|
|
145
143
|
};
|
|
146
144
|
};
|
|
147
145
|
//# sourceMappingURL=useProfile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProfile.js","sourceRoot":"","sources":["../../../../src/features/profile/hooks/useProfile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"useProfile.js","sourceRoot":"","sources":["../../../../src/features/profile/hooks/useProfile.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,7 +55,7 @@ export const useProjectLogic = ({ action = 'list', id, extraArg }) => {
|
|
|
55
55
|
try {
|
|
56
56
|
await api.post('/project', {
|
|
57
57
|
...formData,
|
|
58
|
-
skills: formData.skills.split(',').map(s => s.trim())
|
|
58
|
+
skills: formData.skills.split(',').map((s) => s.trim()),
|
|
59
59
|
});
|
|
60
60
|
setData({ message: 'Project created successfully!' });
|
|
61
61
|
}
|
|
@@ -91,7 +91,7 @@ export const useProjectLogic = ({ action = 'list', id, extraArg }) => {
|
|
|
91
91
|
message,
|
|
92
92
|
setMessage,
|
|
93
93
|
handleCreateSubmit,
|
|
94
|
-
handleApplySubmit
|
|
94
|
+
handleApplySubmit,
|
|
95
95
|
};
|
|
96
96
|
};
|
|
97
97
|
//# sourceMappingURL=useProject.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProject.js","sourceRoot":"","sources":["../../../../src/features/project/hooks/useProject.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useProject.js","sourceRoot":"","sources":["../../../../src/features/project/hooks/useProject.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { User } from '../types/index.js';
|
|
2
|
+
interface AuthResponse {
|
|
3
|
+
token: string;
|
|
4
|
+
user: User;
|
|
5
|
+
}
|
|
6
|
+
export declare const AuthService: {
|
|
7
|
+
login(usernameOrEmail: string, password: string): Promise<AuthResponse>;
|
|
8
|
+
signup(userData: Partial<User> & {
|
|
9
|
+
password: string;
|
|
10
|
+
}): Promise<AuthResponse>;
|
|
11
|
+
validateToken(): Promise<User>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=auth.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../src/services/auth.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,UAAU,YAAY;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,IAAI,CAAC;CACd;AAED,eAAO,MAAM,WAAW;2BACS,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;qBAQtD,OAAO,CAAC,IAAI,CAAC,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;qBAK5D,OAAO,CAAC,IAAI,CAAC;CAIvC,CAAC"}
|