hackmate-cli 1.0.29 → 1.1.1
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.d.ts +2 -0
- package/dist/Dashboard.d.ts.map +1 -0
- package/dist/Dashboard.js +69 -0
- package/dist/Dashboard.js.map +1 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +19 -1
- package/dist/api.js.map +1 -1
- package/dist/cli.js +16 -7
- package/dist/cli.js.map +1 -1
- package/dist/commands/Config.d.ts.map +1 -1
- package/dist/commands/Config.js +6 -5
- package/dist/commands/Config.js.map +1 -1
- package/dist/commands/DataExport.d.ts.map +1 -1
- package/dist/commands/DataExport.js +11 -15
- package/dist/commands/DataExport.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 +33 -73
- 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 +58 -77
- package/dist/commands/MatchList.js.map +1 -1
- package/dist/commands/Presence.d.ts.map +1 -1
- package/dist/commands/Presence.js +10 -8
- package/dist/commands/Presence.js.map +1 -1
- package/dist/commands/Privacy.d.ts.map +1 -1
- package/dist/commands/Privacy.js +16 -31
- package/dist/commands/Privacy.js.map +1 -1
- package/dist/commands/Settings.d.ts.map +1 -1
- package/dist/commands/Settings.js +13 -31
- package/dist/commands/Settings.js.map +1 -1
- package/dist/commands/Stats.d.ts.map +1 -1
- package/dist/commands/Stats.js +12 -31
- package/dist/commands/Stats.js.map +1 -1
- package/dist/commands/auth/auth.logic.d.ts.map +1 -1
- package/dist/commands/auth/auth.logic.js +26 -14
- package/dist/commands/auth/auth.logic.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 +27 -40
- 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/components/UnfriendByUsername.d.ts.map +1 -1
- package/dist/features/network/components/UnfriendByUsername.js +8 -8
- package/dist/features/network/components/UnfriendByUsername.js.map +1 -1
- package/dist/features/network/components/network.screen.d.ts.map +1 -1
- package/dist/features/network/components/network.screen.js +8 -7
- package/dist/features/network/components/network.screen.js.map +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/components/profile-edit.screen.d.ts.map +1 -1
- package/dist/features/profile/components/profile-edit.screen.js +12 -12
- package/dist/features/profile/components/profile-edit.screen.js.map +1 -1
- package/dist/features/profile/components/profile-view.screen.d.ts.map +1 -1
- package/dist/features/profile/components/profile-view.screen.js +14 -17
- package/dist/features/profile/components/profile-view.screen.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/components/DataList.d.ts +10 -0
- package/dist/shared/components/DataList.d.ts.map +1 -0
- package/dist/shared/components/DataList.js +9 -0
- package/dist/shared/components/DataList.js.map +1 -0
- package/dist/shared/components/ErrorState.d.ts +7 -0
- package/dist/shared/components/ErrorState.d.ts.map +1 -0
- package/dist/shared/components/ErrorState.js +6 -0
- package/dist/shared/components/ErrorState.js.map +1 -0
- package/dist/shared/components/Loader.d.ts +7 -0
- package/dist/shared/components/Loader.d.ts.map +1 -0
- package/dist/shared/components/Loader.js +7 -0
- package/dist/shared/components/Loader.js.map +1 -0
- package/dist/shared/components/Screen.d.ts +10 -0
- package/dist/shared/components/Screen.d.ts.map +1 -0
- package/dist/shared/components/Screen.js +6 -0
- package/dist/shared/components/Screen.js.map +1 -0
- package/dist/shared/components/index.d.ts +5 -0
- package/dist/shared/components/index.d.ts.map +1 -0
- package/dist/shared/components/index.js +5 -0
- package/dist/shared/components/index.js.map +1 -0
- package/dist/shared/hooks/useAsyncRequest.d.ts +9 -0
- package/dist/shared/hooks/useAsyncRequest.d.ts.map +1 -0
- package/dist/shared/hooks/useAsyncRequest.js +56 -0
- package/dist/shared/hooks/useAsyncRequest.js.map +1 -0
- package/dist/shared/hooks/useListNavigation.d.ts +5 -0
- package/dist/shared/hooks/useListNavigation.d.ts.map +1 -0
- package/dist/shared/hooks/useListNavigation.js +15 -0
- package/dist/shared/hooks/useListNavigation.js.map +1 -0
- 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 +17 -4
|
@@ -2,6 +2,7 @@ import { useState } from 'react';
|
|
|
2
2
|
import { useApp } from 'ink';
|
|
3
3
|
import api from '../../api.js';
|
|
4
4
|
import { saveToken, saveUser } from '../../config.js';
|
|
5
|
+
import { AuthService } from '../../services/auth.service.js';
|
|
5
6
|
export const useLoginLogic = () => {
|
|
6
7
|
const { exit } = useApp();
|
|
7
8
|
const [username, setUsername] = useState('');
|
|
@@ -13,7 +14,7 @@ export const useLoginLogic = () => {
|
|
|
13
14
|
setLoading(true);
|
|
14
15
|
setError(null);
|
|
15
16
|
try {
|
|
16
|
-
const
|
|
17
|
+
const data = await AuthService.login(username, password);
|
|
17
18
|
saveToken(data.token);
|
|
18
19
|
saveUser(data.user);
|
|
19
20
|
console.log('✅ Login successful!');
|
|
@@ -32,11 +33,15 @@ export const useLoginLogic = () => {
|
|
|
32
33
|
}
|
|
33
34
|
};
|
|
34
35
|
return {
|
|
35
|
-
username,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
username,
|
|
37
|
+
setUsername,
|
|
38
|
+
password,
|
|
39
|
+
setPassword,
|
|
40
|
+
step,
|
|
41
|
+
setStep,
|
|
42
|
+
error,
|
|
43
|
+
loading,
|
|
44
|
+
handleSubmit,
|
|
40
45
|
};
|
|
41
46
|
};
|
|
42
47
|
export const useSignupLogic = () => {
|
|
@@ -93,7 +98,7 @@ export const useSignupLogic = () => {
|
|
|
93
98
|
setStatus('Creating account...');
|
|
94
99
|
try {
|
|
95
100
|
// 1. Signup
|
|
96
|
-
const
|
|
101
|
+
const data = await AuthService.signup({ username, email, password });
|
|
97
102
|
saveToken(data.token);
|
|
98
103
|
saveUser(data.user);
|
|
99
104
|
// 2. Send OTP automatically
|
|
@@ -136,16 +141,23 @@ export const useSignupLogic = () => {
|
|
|
136
141
|
}
|
|
137
142
|
};
|
|
138
143
|
return {
|
|
139
|
-
username,
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
144
|
+
username,
|
|
145
|
+
setUsername,
|
|
146
|
+
email,
|
|
147
|
+
setEmail,
|
|
148
|
+
password,
|
|
149
|
+
setPassword,
|
|
150
|
+
otp,
|
|
151
|
+
setOtp,
|
|
152
|
+
step,
|
|
153
|
+
setStep,
|
|
154
|
+
error,
|
|
155
|
+
loading,
|
|
156
|
+
status,
|
|
145
157
|
handleSubmit,
|
|
146
158
|
submitUsername,
|
|
147
159
|
submitEmail,
|
|
148
|
-
handleVerifyParams
|
|
160
|
+
handleVerifyParams,
|
|
149
161
|
};
|
|
150
162
|
};
|
|
151
163
|
//# sourceMappingURL=auth.logic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.logic.js","sourceRoot":"","sources":["../../../src/commands/auth/auth.logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.logic.js","sourceRoot":"","sources":["../../../src/commands/auth/auth.logic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.logic.js","sourceRoot":"","sources":["../../../src/commands/auth/verify.logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;IAC3B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAuC,SAAS,CAAC,CAAC;IAClF,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAE5D,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;QAC7B,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAC9B,IAAI,CAAC;YACD,0DAA0D;YAC1D,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YACrC,OAAO,CAAC,YAAY,CAAC,CAAC;YACtB,UAAU,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC;gBAAS,CAAC;YACP,UAAU,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;QAC/B,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACD,MAAM,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,SAAS,CAAC,CAAC;YACnB,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,IAAI,aAAa,CAAC,CAAC;QAC3D,CAAC;gBAAS,CAAC;YACP,UAAU,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACL,CAAC,CAAC;IAEF,OAAO;QACH,IAAI;QACJ,GAAG;QACH,MAAM;QACN,OAAO;QACP,KAAK;QACL,aAAa;QACb,eAAe;QACf,KAAK,EAAE,IAAI,EAAE,QAAQ,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"verify.logic.js","sourceRoot":"","sources":["../../../src/commands/auth/verify.logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;IAC3B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAuC,SAAS,CAAC,CAAC;IAClF,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAE5D,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;QAC7B,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAC9B,IAAI,CAAC;YACD,0DAA0D;YAC1D,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YACrC,OAAO,CAAC,YAAY,CAAC,CAAC;YACtB,UAAU,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC;gBAAS,CAAC;YACP,UAAU,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;QAC/B,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACD,MAAM,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,SAAS,CAAC,CAAC;YACnB,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,IAAI,aAAa,CAAC,CAAC;QAC3D,CAAC;gBAAS,CAAC;YACP,UAAU,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACL,CAAC,CAAC;IAEF,OAAO;QACH,IAAI;QACJ,GAAG;QACH,MAAM;QACN,OAAO;QACP,KAAK;QACL,aAAa;QACb,eAAe;QACf,KAAK,EAAE,IAAI,EAAE,QAAQ,IAAI,MAAM,EAAE,qBAAqB;KACzD,CAAC;AACN,CAAC,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
|
+
import { User } from './types/index.js';
|
|
1
2
|
export declare const saveToken: (token: string) => void;
|
|
2
3
|
export declare const getToken: () => string | undefined;
|
|
3
|
-
export declare const saveUser: (user:
|
|
4
|
-
|
|
5
|
-
id: string;
|
|
6
|
-
}) => void;
|
|
7
|
-
export declare const getUser: () => {
|
|
8
|
-
username: string;
|
|
9
|
-
id: string;
|
|
10
|
-
} | undefined;
|
|
4
|
+
export declare const saveUser: (user: User) => void;
|
|
5
|
+
export declare const getUser: () => User | undefined;
|
|
11
6
|
export declare const getApiUrl: () => string;
|
|
12
7
|
export declare const setApiUrl: (url: string) => void;
|
|
13
8
|
export declare const logout: () => void;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAgBxC,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,SAEtC,CAAC;AAEF,eAAO,MAAM,QAAQ,0BAEpB,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,MAAM,IAAI,SAElC,CAAC;AAEF,eAAO,MAAM,OAAO,wBAEnB,CAAC;AAEF,eAAO,MAAM,SAAS,cAGrB,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,SAEpC,CAAC;AAEF,eAAO,MAAM,MAAM,YAElB,CAAC"}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AASxB,MAAM,MAAM,GAAG,IAAI,IAAI,CAAS;IAC5B,WAAW,EAAE,cAAc;CAC9B,CAAC,CAAC;AAEH,8DAA8D;AAC9D,MAAM,eAAe,GACjB,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,2EAA2E,CAAC;AAE/G,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE;IACvC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IACzB,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAE,EAAE;IACnC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE;IACxB,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE;IAC1B,+FAA+F;IAC/F,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,eAAe,CAAC;AAC1E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE;IACrC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,EAAE;IACvB,MAAM,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthContext.d.ts","sourceRoot":"","sources":["../../src/context/AuthContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AuthContext.d.ts","sourceRoot":"","sources":["../../src/context/AuthContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAI9E,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC3C,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACtB;AAID,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CA4DhE,CAAC;AAEF,eAAO,MAAM,OAAO,uBAMnB,CAAC"}
|
|
@@ -1,19 +1,35 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { createContext, useContext, useEffect, useState } from 'react';
|
|
3
3
|
import { saveToken, saveUser, getToken, getUser, logout as configLogout } from '../config.js';
|
|
4
|
+
import { AuthService } from '../services/auth.service.js';
|
|
4
5
|
const AuthContext = createContext(undefined);
|
|
5
6
|
export const AuthProvider = ({ children }) => {
|
|
6
7
|
const [user, setUser] = useState(null);
|
|
7
8
|
const [token, setToken] = useState(null);
|
|
8
9
|
const [isLoading, setIsLoading] = useState(true);
|
|
9
10
|
useEffect(() => {
|
|
10
|
-
const loadSession = () => {
|
|
11
|
+
const loadSession = async () => {
|
|
11
12
|
const storedUser = getUser();
|
|
12
13
|
const storedToken = getToken();
|
|
13
14
|
if (storedUser && storedToken) {
|
|
14
|
-
//
|
|
15
|
+
// Optimistically set user
|
|
16
|
+
// @ts-ignore
|
|
15
17
|
setUser(storedUser);
|
|
16
18
|
setToken(storedToken);
|
|
19
|
+
// Validate with server
|
|
20
|
+
try {
|
|
21
|
+
const freshUser = await AuthService.validateToken();
|
|
22
|
+
setUser(freshUser);
|
|
23
|
+
saveUser(freshUser); // Update local cache
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
console.error('Session expired');
|
|
27
|
+
// Don't auto-logout immediately to avoid flicker, just let requests fail?
|
|
28
|
+
// Or logout strictly:
|
|
29
|
+
configLogout();
|
|
30
|
+
setToken(null);
|
|
31
|
+
setUser(null);
|
|
32
|
+
}
|
|
17
33
|
}
|
|
18
34
|
setIsLoading(false);
|
|
19
35
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthContext.js","sourceRoot":"","sources":["../../src/context/AuthContext.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"AuthContext.js","sourceRoot":"","sources":["../../src/context/AuthContext.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAa1D,MAAM,WAAW,GAAG,aAAa,CAA8B,SAAS,CAAC,CAAC;AAE1E,MAAM,CAAC,MAAM,YAAY,GAA4C,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IAClF,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAc,IAAI,CAAC,CAAC;IACpD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEjD,SAAS,CAAC,GAAG,EAAE;QACX,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;YAC3B,MAAM,UAAU,GAAG,OAAO,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,QAAQ,EAAE,CAAC;YAE/B,IAAI,UAAU,IAAI,WAAW,EAAE,CAAC;gBAC5B,0BAA0B;gBAC1B,aAAa;gBACb,OAAO,CAAC,UAAU,CAAC,CAAC;gBACpB,QAAQ,CAAC,WAAqB,CAAC,CAAC;gBAEhC,uBAAuB;gBACvB,IAAI,CAAC;oBACD,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,aAAa,EAAE,CAAC;oBACpD,OAAO,CAAC,SAAS,CAAC,CAAC;oBACnB,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB;gBAC9C,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;oBACjC,0EAA0E;oBAC1E,sBAAsB;oBACtB,YAAY,EAAE,CAAC;oBACf,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC;YACL,CAAC;YACD,YAAY,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC,CAAC;QACF,WAAW,EAAE,CAAC;IAClB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,CAAC,QAAgB,EAAE,OAAa,EAAE,EAAE;QAC9C,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpB,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClB,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnB,OAAO,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,GAAG,EAAE;QAChB,YAAY,EAAE,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CACH,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE;YACzB,IAAI;YACJ,KAAK;YACL,eAAe,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK;YAClC,KAAK;YACL,MAAM;YACN,SAAS;SACZ,YACI,QAAQ,GACU,CAC1B,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE;IACxB,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatList.d.ts","sourceRoot":"","sources":["../../../../src/features/chat/components/ChatList.tsx"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -1,62 +1,49 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import { Box, Text,
|
|
4
|
-
import
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { Box, Text, useInput, useApp } from 'ink';
|
|
4
|
+
import { useAsyncRequest } from '../../../shared/hooks/useAsyncRequest.js';
|
|
5
|
+
import { useListNavigation } from '../../../shared/hooks/useListNavigation.js';
|
|
6
|
+
import { Screen, Loader, ErrorState, DataList } from '../../../shared/components/index.js';
|
|
5
7
|
import { useChatLogic } from '../hooks/useChat.js';
|
|
6
8
|
import { ChatScreen } from './chat.screen.js';
|
|
7
|
-
export const ChatList = () => {
|
|
9
|
+
export const ChatList = ({ onBack }) => {
|
|
8
10
|
const { exit } = useApp();
|
|
9
|
-
const [conversations, setConversations] = useState([]);
|
|
10
|
-
const [loading, setLoading] = useState(true);
|
|
11
|
-
const [error, setError] = useState(null);
|
|
12
|
-
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
13
11
|
const [activeChatUser, setActiveChatUser] = useState(null);
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
.then(({ data }) => {
|
|
20
|
-
setConversations(data);
|
|
21
|
-
setLoading(false);
|
|
22
|
-
})
|
|
23
|
-
.catch(err => {
|
|
24
|
-
setError(err.message || 'Failed to load conversations');
|
|
25
|
-
setLoading(false);
|
|
26
|
-
});
|
|
27
|
-
}, [activeChatUser]);
|
|
12
|
+
// Only fetch if we are in list mode
|
|
13
|
+
const { data: conversations, loading, error } = useAsyncRequest(activeChatUser ? null : '/chat/conversations');
|
|
14
|
+
// Default to 0, handle empty case
|
|
15
|
+
const { selectedIndex, setSelectedIndex } = useListNavigation(conversations?.length || 0);
|
|
16
|
+
// Navigation input
|
|
28
17
|
useInput((input, key) => {
|
|
29
18
|
if (activeChatUser)
|
|
30
|
-
return; //
|
|
19
|
+
return; // Child component handles input
|
|
31
20
|
if (key.escape) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if (key.downArrow) {
|
|
38
|
-
setSelectedIndex(prev => Math.min(conversations.length - 1, prev + 1));
|
|
39
|
-
}
|
|
40
|
-
if (key.return) {
|
|
41
|
-
const target = conversations[selectedIndex]?.user.username;
|
|
42
|
-
if (target) {
|
|
43
|
-
setActiveChatUser(target);
|
|
21
|
+
if (onBack) {
|
|
22
|
+
onBack();
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
exit();
|
|
44
26
|
}
|
|
45
27
|
}
|
|
28
|
+
if (key.return && conversations && conversations.length > 0) {
|
|
29
|
+
setActiveChatUser(conversations[selectedIndex].user.username);
|
|
30
|
+
}
|
|
46
31
|
});
|
|
47
32
|
if (activeChatUser) {
|
|
48
33
|
return _jsx(ActiveChat, { username: activeChatUser, onBack: () => setActiveChatUser(null) });
|
|
49
34
|
}
|
|
50
35
|
if (loading)
|
|
51
|
-
return _jsx(
|
|
36
|
+
return _jsx(Loader, { text: "Loading conversations..." });
|
|
52
37
|
if (error)
|
|
53
|
-
return
|
|
54
|
-
|
|
55
|
-
|
|
38
|
+
return _jsx(ErrorState, { error: error });
|
|
39
|
+
// Empty state logic handled by DataList mostly, but good to be explicit for custom message
|
|
40
|
+
if (!conversations || conversations.length === 0) {
|
|
41
|
+
return (_jsxs(Screen, { title: "Direct Messages", borderColor: "blue", children: [_jsx(Text, { children: "No conversations yet." }), _jsx(Text, { color: "gray", children: "Visit \"Discover\" or \"Matches\" to find people to chat with!" })] }));
|
|
56
42
|
}
|
|
57
|
-
return (
|
|
43
|
+
return (_jsx(Screen, { title: "Direct Messages", borderColor: "blue", children: _jsx(DataList, { items: conversations, selectedIndex: selectedIndex, renderItem: (conv, isSelected) => (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Text, { color: isSelected ? 'green' : 'white', bold: true, children: ["@", conv.user.username] }), _jsx(Text, { color: "gray", children: new Date(conv.lastMessage?.createdAt || Date.now()).toLocaleDateString() })] }), _jsxs(Text, { color: "gray", dimColor: true, children: [conv.lastMessage?.content?.substring(0, 50) || 'No messages', "..."] })] })) }) }));
|
|
58
44
|
};
|
|
59
45
|
const ActiveChat = ({ username, onBack }) => {
|
|
46
|
+
// We pass onExit to handle the "Back" action from the ChatScreen
|
|
60
47
|
const logic = useChatLogic({ targetUsername: username, onExit: onBack });
|
|
61
48
|
return _jsx(ChatScreen, { ...logic });
|
|
62
49
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatList.js","sourceRoot":"","sources":["../../../../src/features/chat/components/ChatList.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,
|
|
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":"UnfriendByUsername.d.ts","sourceRoot":"","sources":["../../../../src/features/network/components/UnfriendByUsername.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"UnfriendByUsername.d.ts","sourceRoot":"","sources":["../../../../src/features/network/components/UnfriendByUsername.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAMnD,UAAU,uBAAuB;IAC7B,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAoChE,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useState, useEffect } from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { Text } from 'ink';
|
|
4
4
|
import { useUnfriend } from '../hooks/useUnfriend.js';
|
|
5
|
+
import { Screen, Loader, ErrorState } from '../../../shared/components/index.js';
|
|
5
6
|
import api from '../../../api.js';
|
|
6
7
|
export const UnfriendByUsername = ({ username }) => {
|
|
7
8
|
const { unfriend, loading, error, success } = useUnfriend();
|
|
@@ -11,7 +12,6 @@ export const UnfriendByUsername = ({ username }) => {
|
|
|
11
12
|
const fetchUserId = async () => {
|
|
12
13
|
try {
|
|
13
14
|
const { data } = await api.get(`/profile/${username}`);
|
|
14
|
-
// data.user.id contains the user ID from getProfileByUsername
|
|
15
15
|
const targetUserId = data.user?.id || data.userId?._id || data.userId;
|
|
16
16
|
if (!targetUserId) {
|
|
17
17
|
setFetchError('Could not determine user ID');
|
|
@@ -26,15 +26,15 @@ export const UnfriendByUsername = ({ username }) => {
|
|
|
26
26
|
};
|
|
27
27
|
fetchUserId();
|
|
28
28
|
}, [username, unfriend]);
|
|
29
|
-
if (loading || !userId)
|
|
30
|
-
return _jsx(
|
|
29
|
+
if (loading || (!userId && !fetchError))
|
|
30
|
+
return _jsx(Loader, { text: `Unfriending @${username}...` });
|
|
31
31
|
if (fetchError)
|
|
32
|
-
return
|
|
32
|
+
return _jsx(ErrorState, { error: fetchError });
|
|
33
33
|
if (error)
|
|
34
|
-
return
|
|
34
|
+
return _jsx(ErrorState, { error: error });
|
|
35
35
|
if (success) {
|
|
36
|
-
return (_jsx(
|
|
36
|
+
return (_jsx(Screen, { title: "Success", borderColor: "green", children: _jsxs(Text, { color: "green", children: ["\u2705 Unfriended @", username, " successfully"] }) }));
|
|
37
37
|
}
|
|
38
|
-
return _jsx(
|
|
38
|
+
return _jsx(Loader, { text: "Processing..." });
|
|
39
39
|
};
|
|
40
40
|
//# sourceMappingURL=UnfriendByUsername.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnfriendByUsername.js","sourceRoot":"","sources":["../../../../src/features/network/components/UnfriendByUsername.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"UnfriendByUsername.js","sourceRoot":"","sources":["../../../../src/features/network/components/UnfriendByUsername.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAMlC,MAAM,CAAC,MAAM,kBAAkB,GAAsC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IAClF,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC;IAC5D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAElE,SAAS,CAAC,GAAG,EAAE;QACX,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;YAC3B,IAAI,CAAC;gBACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;gBACvD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC;gBACtE,IAAI,CAAC,YAAY,EAAE,CAAC;oBAChB,aAAa,CAAC,6BAA6B,CAAC,CAAC;oBAC7C,OAAO;gBACX,CAAC;gBACD,SAAS,CAAC,YAAY,CAAC,CAAC;gBACxB,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;YACjC,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAChB,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,IAAI,gBAAgB,CAAC,CAAC;YACnE,CAAC;QACL,CAAC,CAAC;QACF,WAAW,EAAE,CAAC;IAClB,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEzB,IAAI,OAAO,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,KAAC,MAAM,IAAC,IAAI,EAAE,gBAAgB,QAAQ,KAAK,GAAI,CAAC;IAChG,IAAI,UAAU;QAAE,OAAO,KAAC,UAAU,IAAC,KAAK,EAAE,UAAU,GAAI,CAAC;IACzD,IAAI,KAAK;QAAE,OAAO,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,GAAI,CAAC;IAE/C,IAAI,OAAO,EAAE,CAAC;QACV,OAAO,CACH,KAAC,MAAM,IAAC,KAAK,EAAC,SAAS,EAAC,WAAW,EAAC,OAAO,YACvC,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,oCAAgB,QAAQ,qBAAqB,GAC3D,CACZ,CAAC;IACN,CAAC;IAED,OAAO,KAAC,MAAM,IAAC,IAAI,EAAC,eAAe,GAAG,CAAC;AAC3C,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.screen.d.ts","sourceRoot":"","sources":["../../../../src/features/network/components/network.screen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"network.screen.d.ts","sourceRoot":"","sources":["../../../../src/features/network/components/network.screen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,kBAAkB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA2CtD,CAAC"}
|