@churchapps/apphelper 0.5.11 → 0.6.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/components/ErrorMessages.js +1 -1
- package/dist/components/ErrorMessages.js.map +1 -1
- package/dist/components/FormCardPayment.js +2 -2
- package/dist/components/FormCardPayment.js.map +1 -1
- package/dist/components/ImageEditor.d.ts.map +1 -1
- package/dist/components/ImageEditor.js +13 -8
- package/dist/components/ImageEditor.js.map +1 -1
- package/dist/components/PageHeader.js +1 -1
- package/dist/components/PageHeader.js.map +1 -1
- package/dist/components/QuestionEdit.js +2 -2
- package/dist/components/QuestionEdit.js.map +1 -1
- package/dist/components/SmallButton.js +1 -1
- package/dist/components/SmallButton.js.map +1 -1
- package/dist/components/gallery/GalleryModal.d.ts.map +1 -1
- package/dist/components/gallery/GalleryModal.js +2 -6
- package/dist/components/gallery/GalleryModal.js.map +1 -1
- package/dist/components/header/SecondaryMenu.js +2 -2
- package/dist/components/header/SecondaryMenu.js.map +1 -1
- package/dist/components/header/SiteHeader.d.ts.map +1 -1
- package/dist/components/header/SiteHeader.js +0 -3
- package/dist/components/header/SiteHeader.js.map +1 -1
- package/dist/components/notes/Note.js +1 -1
- package/dist/components/notes/Note.js.map +1 -1
- package/dist/components/wrapper/ChurchList.d.ts.map +1 -1
- package/dist/components/wrapper/ChurchList.js +0 -7
- package/dist/components/wrapper/ChurchList.js.map +1 -1
- package/dist/components/wrapper/NewPrivateMessage.d.ts.map +1 -1
- package/dist/components/wrapper/NewPrivateMessage.js +1 -2
- package/dist/components/wrapper/NewPrivateMessage.js.map +1 -1
- package/dist/components/wrapper/Notifications.js +1 -1
- package/dist/components/wrapper/Notifications.js.map +1 -1
- package/dist/components/wrapper/PrivateMessageDetails.d.ts.map +1 -1
- package/dist/components/wrapper/PrivateMessageDetails.js +1 -4
- package/dist/components/wrapper/PrivateMessageDetails.js.map +1 -1
- package/dist/components/wrapper/PrivateMessages.js +1 -1
- package/dist/components/wrapper/PrivateMessages.js.map +1 -1
- package/dist/components/wrapper/UserMenu.d.ts.map +1 -1
- package/dist/components/wrapper/UserMenu.js +0 -13
- package/dist/components/wrapper/UserMenu.js.map +1 -1
- package/dist/helpers/ErrorHelper.d.ts.map +1 -1
- package/dist/helpers/ErrorHelper.js +0 -2
- package/dist/helpers/ErrorHelper.js.map +1 -1
- package/dist/helpers/NotificationService.d.ts +0 -18
- package/dist/helpers/NotificationService.d.ts.map +1 -1
- package/dist/helpers/NotificationService.js +0 -65
- package/dist/helpers/NotificationService.js.map +1 -1
- package/dist/helpers/SocketHelper.d.ts.map +1 -1
- package/dist/helpers/SocketHelper.js +1 -53
- package/dist/helpers/SocketHelper.js.map +1 -1
- package/dist/helpers/UserHelper.d.ts.map +1 -1
- package/dist/helpers/UserHelper.js +0 -4
- package/dist/helpers/UserHelper.js.map +1 -1
- package/package.json +1 -1
- package/src/components/ErrorMessages.tsx +1 -1
- package/src/components/FormCardPayment.tsx +1 -1
- package/src/components/ImageEditor.tsx +14 -8
- package/src/components/PageHeader.tsx +2 -2
- package/src/components/QuestionEdit.tsx +2 -2
- package/src/components/SmallButton.tsx +1 -1
- package/src/components/gallery/GalleryModal.tsx +2 -6
- package/src/components/header/SecondaryMenu.tsx +2 -2
- package/src/components/header/SiteHeader.tsx +0 -3
- package/src/components/notes/Note.tsx +2 -2
- package/src/components/wrapper/ChurchList.tsx +5 -14
- package/src/components/wrapper/NewPrivateMessage.tsx +1 -2
- package/src/components/wrapper/Notifications.tsx +1 -1
- package/src/components/wrapper/PrivateMessageDetails.tsx +8 -14
- package/src/components/wrapper/PrivateMessages.tsx +1 -1
- package/src/components/wrapper/UserMenu.tsx +3 -17
- package/src/helpers/ErrorHelper.ts +0 -2
- package/src/helpers/NotificationService.ts +0 -64
- package/src/helpers/SocketHelper.ts +1 -50
- package/src/helpers/UserHelper.ts +2 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationService.js","sourceRoot":"","sources":["../../src/helpers/NotificationService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAwB,MAAM,qBAAqB,CAAC;AAOtE,MAAM,OAAO,mBAAmB;IAQ9B;QANQ,WAAM,GAAuB,EAAE,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QAClE,cAAS,GAAgD,EAAE,CAAC;QAC5D,kBAAa,GAAY,KAAK,CAAC;QAC/B,oBAAe,GAAkB,IAAI,CAAC;QACtC,gBAAW,GAAe,IAAI,CAAC;IAEhB,CAAC;IAExB,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;YAClC,mBAAmB,CAAC,QAAQ,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAC3D,CAAC;QACD,OAAO,mBAAmB,CAAC,QAAQ,CAAC;IACtC,CAAC;IAED;;OAEG;IACH
|
|
1
|
+
{"version":3,"file":"NotificationService.js","sourceRoot":"","sources":["../../src/helpers/NotificationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SocketHelper.d.ts","sourceRoot":"","sources":["../../src/helpers/SocketHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,4BAA4B,EAAE,sBAAsB,EAAmD,MAAM,qBAAqB,CAAC;AAEjK,qBAAa,YAAY;IACxB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;IACzB,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,cAAc,EAAE,4BAA4B,EAAE,CAAM;IAC3D,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAA0E;IACzG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAkB;IAE5C,MAAM,CAAC,eAAe,GAAI,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,
|
|
1
|
+
{"version":3,"file":"SocketHelper.d.ts","sourceRoot":"","sources":["../../src/helpers/SocketHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,4BAA4B,EAAE,sBAAsB,EAAmD,MAAM,qBAAqB,CAAC;AAEjK,qBAAa,YAAY;IACxB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;IACzB,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,cAAc,EAAE,4BAA4B,EAAE,CAAM;IAC3D,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAA0E;IACzG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAkB;IAE5C,MAAM,CAAC,eAAe,GAAI,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,UAOnE;IAED,MAAM,CAAC,qBAAqB,aA6B3B;IAED,MAAM,CAAC,IAAI,sBAmFV;IAED,MAAM,CAAC,UAAU,GAAI,QAAQ,MAAM,EAAE,IAAI,MAAM,EAAE,eAAe,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,UAOlF;IAED,MAAM,CAAC,aAAa,GAAI,IAAI,MAAM,UAEjC;IAED,MAAM,CAAC,sBAAsB,GAAI,QAAQ,MAAM,UAE9C;IAED,MAAM,CAAC,gBAAgB,aAEtB;IAED,MAAM,CAAC,aAAa,GAAI,SAAS,sBAAsB,UAuBtD;IAED,MAAM,CAAC,OAAO,aAiBb;IAED,MAAM,CAAC,UAAU,aAEhB;IAED,MAAM,CAAC,WAAW,QAAO,OAAO,CAE/B;IAED,MAAM,CAAC,kBAAkB,QAAO,MAAM,CAerC;IAGD,MAAM,CAAC,kBAAkB,mBAmBxB;CAED"}
|
|
@@ -7,21 +7,14 @@ SocketHelper.actionHandlers = [];
|
|
|
7
7
|
SocketHelper.personIdChurchId = { personId: "", churchId: "" };
|
|
8
8
|
SocketHelper.isCleanedUp = false;
|
|
9
9
|
SocketHelper.setPersonChurch = (pc) => {
|
|
10
|
-
console.log('👤 SocketHelper: Setting person/church context:', pc);
|
|
11
10
|
if (pc?.personId && pc.personId && pc.churchId !== _a.personIdChurchId.churchId && pc.personId !== _a.personIdChurchId.personId) {
|
|
12
11
|
_a.personIdChurchId = pc;
|
|
13
|
-
console.log('🔗 SocketHelper: Person/church context updated, creating alert connection');
|
|
14
12
|
_a.createAlertConnection();
|
|
15
13
|
}
|
|
16
14
|
else {
|
|
17
|
-
console.log('⚠️ SocketHelper: Person/church context unchanged or invalid');
|
|
18
15
|
}
|
|
19
16
|
};
|
|
20
17
|
SocketHelper.createAlertConnection = () => {
|
|
21
|
-
console.log('🔗 SocketHelper: Attempting to create alert connection...');
|
|
22
|
-
console.log('🆔 Socket ID:', _a.socketId);
|
|
23
|
-
console.log('👤 Person ID:', _a.personIdChurchId.personId);
|
|
24
|
-
console.log('⛪ Church ID:', _a.personIdChurchId.churchId);
|
|
25
18
|
if (_a.personIdChurchId.personId && _a.socketId) {
|
|
26
19
|
const connection = {
|
|
27
20
|
conversationId: "alerts",
|
|
@@ -30,9 +23,7 @@ SocketHelper.createAlertConnection = () => {
|
|
|
30
23
|
socketId: _a.socketId,
|
|
31
24
|
personId: _a.personIdChurchId.personId
|
|
32
25
|
};
|
|
33
|
-
console.log('🔗 SocketHelper: Creating alert connection with data:', connection);
|
|
34
26
|
ApiHelper.postAnonymous("/connections", [connection], "MessagingApi").then((response) => {
|
|
35
|
-
console.log('✅ SocketHelper: Alert connection created successfully:', response);
|
|
36
27
|
}).catch((error) => {
|
|
37
28
|
console.error("❌ Failed to create alert connection:", error);
|
|
38
29
|
console.error("❌ Error details:", {
|
|
@@ -52,11 +43,9 @@ SocketHelper.createAlertConnection = () => {
|
|
|
52
43
|
}
|
|
53
44
|
};
|
|
54
45
|
SocketHelper.init = async () => {
|
|
55
|
-
console.log('🔌 SocketHelper: Starting initialization...');
|
|
56
46
|
_a.cleanup();
|
|
57
47
|
_a.isCleanedUp = false;
|
|
58
48
|
if (_a.socket && _a.socket.readyState !== _a.socket.CLOSED) {
|
|
59
|
-
console.log('🔌 SocketHelper: Closing existing socket connection');
|
|
60
49
|
try {
|
|
61
50
|
_a.socket.close();
|
|
62
51
|
}
|
|
@@ -64,48 +53,33 @@ SocketHelper.init = async () => {
|
|
|
64
53
|
console.error("❌ Error closing existing socket:", e);
|
|
65
54
|
}
|
|
66
55
|
}
|
|
67
|
-
console.log('🔌 SocketHelper: Connecting to:', CommonEnvironmentHelper.MessagingApiSocket);
|
|
68
56
|
await new Promise((resolve, reject) => {
|
|
69
57
|
let hasReceivedSocketId = false;
|
|
70
58
|
let messageCount = 0;
|
|
71
59
|
try {
|
|
72
60
|
_a.socket = new WebSocket(CommonEnvironmentHelper.MessagingApiSocket);
|
|
73
61
|
_a.socket.onmessage = (event) => {
|
|
74
|
-
console.log("🔔 SocketHelper: onmessage event triggered");
|
|
75
62
|
if (_a.isCleanedUp)
|
|
76
63
|
return;
|
|
77
64
|
messageCount++;
|
|
78
|
-
console.log(`📨 SocketHelper: Raw message #${messageCount} received:`, event.data);
|
|
79
|
-
console.log(`📨 SocketHelper: Message timestamp:`, new Date().toISOString());
|
|
80
|
-
console.log(`📨 SocketHelper: Message size:`, event.data.length, 'characters');
|
|
81
65
|
try {
|
|
82
66
|
const payload = JSON.parse(event.data);
|
|
83
|
-
console.log(`📨 SocketHelper: Parsed message #${messageCount}:`, payload);
|
|
84
|
-
console.log(`📨 SocketHelper: Message action:`, payload.action);
|
|
85
|
-
console.log(`📨 SocketHelper: Message data type:`, typeof payload.data);
|
|
86
67
|
if (payload.action === 'socketId') {
|
|
87
68
|
hasReceivedSocketId = true;
|
|
88
|
-
console.log('🆔 SocketHelper: Socket ID received!', payload.data);
|
|
89
69
|
}
|
|
90
70
|
// Log all message types we receive
|
|
91
71
|
switch (payload.action) {
|
|
92
72
|
case 'socketId':
|
|
93
|
-
console.log('🆔 Message type: Socket ID assignment');
|
|
94
73
|
break;
|
|
95
74
|
case 'privateMessage':
|
|
96
|
-
console.log('💬 Message type: Private message notification');
|
|
97
75
|
break;
|
|
98
76
|
case 'notification':
|
|
99
|
-
console.log('🔔 Message type: General notification');
|
|
100
77
|
break;
|
|
101
78
|
case 'message':
|
|
102
|
-
console.log('📩 Message type: Message update');
|
|
103
79
|
break;
|
|
104
80
|
case 'reconnect':
|
|
105
|
-
console.log('🔄 Message type: Reconnection signal');
|
|
106
81
|
break;
|
|
107
82
|
default:
|
|
108
|
-
console.log('❓ Message type: Unknown action -', payload.action);
|
|
109
83
|
}
|
|
110
84
|
_a.handleMessage(payload);
|
|
111
85
|
}
|
|
@@ -115,40 +89,18 @@ SocketHelper.init = async () => {
|
|
|
115
89
|
}
|
|
116
90
|
};
|
|
117
91
|
_a.socket.onopen = async (e) => {
|
|
118
|
-
console.log('✅ SocketHelper: WebSocket connection opened');
|
|
119
|
-
console.log('🔌 SocketHelper: Connection URL:', _a.socket.url);
|
|
120
|
-
console.log('🔌 SocketHelper: Connection protocol:', _a.socket.protocol);
|
|
121
92
|
// Send the getId request
|
|
122
|
-
console.log('🔌 SocketHelper: Sending getId request...');
|
|
123
93
|
_a.socket.send("getId");
|
|
124
|
-
console.log('🔌 SocketHelper: getId request sent');
|
|
125
94
|
// Wait longer to see if we get a response
|
|
126
95
|
setTimeout(() => {
|
|
127
96
|
if (!hasReceivedSocketId) {
|
|
128
97
|
console.warn('⚠️ SocketHelper: No socket ID received after 3 seconds');
|
|
129
|
-
console.log('🔍 SocketHelper: Socket state:', _a.socket.readyState);
|
|
130
|
-
console.log('🔍 SocketHelper: Messages received so far:', messageCount);
|
|
131
98
|
}
|
|
132
99
|
resolve(null);
|
|
133
100
|
}, 3000);
|
|
134
101
|
};
|
|
135
102
|
_a.socket.onclose = async (e) => {
|
|
136
|
-
|
|
137
|
-
code: e.code,
|
|
138
|
-
reason: e.reason,
|
|
139
|
-
wasClean: e.wasClean,
|
|
140
|
-
timestamp: new Date().toISOString(),
|
|
141
|
-
totalMessagesReceived: messageCount
|
|
142
|
-
});
|
|
143
|
-
// Log common close codes for debugging
|
|
144
|
-
if (e.code === 1005)
|
|
145
|
-
console.log('🔍 Close code 1005: No status received (normal for some servers)');
|
|
146
|
-
else if (e.code === 1006)
|
|
147
|
-
console.log('🔍 Close code 1006: Abnormal closure');
|
|
148
|
-
else if (e.code === 1000)
|
|
149
|
-
console.log('🔍 Close code 1000: Normal closure');
|
|
150
|
-
else
|
|
151
|
-
console.log('🔍 Close code:', e.code);
|
|
103
|
+
// Socket closed
|
|
152
104
|
};
|
|
153
105
|
_a.socket.onerror = (error) => {
|
|
154
106
|
console.error('❌ SocketHelper: WebSocket connection error:', error);
|
|
@@ -184,18 +136,14 @@ SocketHelper.handleMessage = (payload) => {
|
|
|
184
136
|
if (_a.isCleanedUp)
|
|
185
137
|
return;
|
|
186
138
|
try {
|
|
187
|
-
console.log('🔄 SocketHelper: Processing message with action:', payload.action);
|
|
188
139
|
if (payload.action === "socketId") {
|
|
189
|
-
console.log('🆔 SocketHelper: Received socket ID:', payload.data);
|
|
190
140
|
_a.socketId = payload.data;
|
|
191
141
|
_a.createAlertConnection();
|
|
192
142
|
}
|
|
193
143
|
else {
|
|
194
144
|
const matchingHandlers = ArrayHelper.getAll(_a.actionHandlers, "action", payload.action);
|
|
195
|
-
console.log(`📬 SocketHelper: Found ${matchingHandlers.length} handlers for action: ${payload.action}`);
|
|
196
145
|
matchingHandlers.forEach((handler) => {
|
|
197
146
|
try {
|
|
198
|
-
console.log(`🏃 SocketHelper: Executing handler ${handler.id} for action: ${payload.action}`);
|
|
199
147
|
handler.handleMessage(payload.data);
|
|
200
148
|
}
|
|
201
149
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SocketHelper.js","sourceRoot":"","sources":["../../src/helpers/SocketHelper.ts"],"names":[],"mappings":";AAAA,OAAO,EAA6E,SAAS,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEjK,MAAM,OAAO,YAAY;;;AAGjB,2BAAc,GAAmC,EAAE,AAArC,CAAsC;AAC5C,6BAAgB,GAA2C,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,AAAzE,CAA0E;AAC1F,wBAAW,GAAY,KAAK,AAAjB,CAAkB;AAErC,4BAAe,GAAG,CAAC,EAA0C,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"SocketHelper.js","sourceRoot":"","sources":["../../src/helpers/SocketHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserHelper.d.ts","sourceRoot":"","sources":["../../src/helpers/UserHelper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAErI,qBAAa,UAAU;IACtB,MAAM,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;IACnD,MAAM,CAAC,YAAY,EAAE,wBAAwB,EAAE,CAAC;IAChD,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC;IAC3B,MAAM,CAAC,aAAa,EAAE,OAAO,CAAS;IACtC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;IAE/B,MAAM,CAAC,YAAY,GAAU,UAAU,oBAAoB,EAAE,WAAW,MAAM,EAAE,UAAU,MAAM,
|
|
1
|
+
{"version":3,"file":"UserHelper.d.ts","sourceRoot":"","sources":["../../src/helpers/UserHelper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAErI,qBAAa,UAAU;IACtB,MAAM,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;IACnD,MAAM,CAAC,YAAY,EAAE,wBAAwB,EAAE,CAAC;IAChD,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC;IAC3B,MAAM,CAAC,aAAa,EAAE,OAAO,CAAS;IACtC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;IAE/B,MAAM,CAAC,YAAY,GAAU,UAAU,oBAAoB,EAAE,WAAW,MAAM,EAAE,UAAU,MAAM,mBA0C/F;IAED,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,wBAAwB;IAK1D,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,wBAAwB;IAI5D,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,cAAc,GAAG,OAAO;IAezE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAUrD,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;CAcjF"}
|
|
@@ -55,7 +55,6 @@ UserHelper.selectChurch = async (context, churchId, keyName) => {
|
|
|
55
55
|
console.error('UserHelper.userChurches is not initialized or not an array:', _a.userChurches);
|
|
56
56
|
// Try to get userChurches from context if available
|
|
57
57
|
if (context?.userChurches && Array.isArray(context.userChurches)) {
|
|
58
|
-
console.log('Using userChurches from context');
|
|
59
58
|
_a.userChurches = context.userChurches;
|
|
60
59
|
}
|
|
61
60
|
else {
|
|
@@ -83,16 +82,13 @@ UserHelper.selectChurch = async (context, churchId, keyName) => {
|
|
|
83
82
|
if (context) {
|
|
84
83
|
if (context.userChurch !== null)
|
|
85
84
|
_a.churchChanged = true;
|
|
86
|
-
console.log('UserHelper.selectChurch - Setting userChurch in context:', userChurch);
|
|
87
85
|
context.setUserChurch(_a.currentUserChurch);
|
|
88
86
|
// Also ensure user is still set in context
|
|
89
87
|
if (_a.user && context.setUser) {
|
|
90
|
-
console.log('UserHelper.selectChurch - Ensuring user is set in context:', _a.user);
|
|
91
88
|
context.setUser(_a.user);
|
|
92
89
|
}
|
|
93
90
|
// Update person if available
|
|
94
91
|
if (_a.person && context.setPerson) {
|
|
95
|
-
console.log('UserHelper.selectChurch - Ensuring person is set in context:', _a.person);
|
|
96
92
|
context.setPerson(_a.person);
|
|
97
93
|
}
|
|
98
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserHelper.js","sourceRoot":"","sources":["../../src/helpers/UserHelper.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAG/C,MAAM,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"UserHelper.js","sourceRoot":"","sources":["../../src/helpers/UserHelper.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -13,7 +13,7 @@ export const ErrorMessages: React.FC<Props> = props => {
|
|
|
13
13
|
if (props.errors.length > 0) {
|
|
14
14
|
const _items: React.ReactNode[] = [];
|
|
15
15
|
for (let i = 0; i < props.errors.length; i++) {
|
|
16
|
-
_items.push(<div key={i}>{props.errors[i]}</div>);
|
|
16
|
+
_items.push(<div key={props.errors[i]}>{props.errors[i]}</div>);
|
|
17
17
|
}
|
|
18
18
|
setItems(_items);
|
|
19
19
|
setOpen(true);
|
|
@@ -148,7 +148,7 @@ export const FormCardPayment = forwardRef((props: Props, ref) => {
|
|
|
148
148
|
if (!lastName) result.push(Locale.label("donation.donationForm.validate.lastName"));
|
|
149
149
|
if (!email) result.push(Locale.label("donation.donationForm.validate.email"));
|
|
150
150
|
if (result.length === 0) {
|
|
151
|
-
if (!email.match(
|
|
151
|
+
if (!email.match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/)) result.push(Locale.label("donation.donationForm.validate.validEmail"));
|
|
152
152
|
}
|
|
153
153
|
return result;
|
|
154
154
|
}
|
|
@@ -23,10 +23,18 @@ export function ImageEditor(props: Props) {
|
|
|
23
23
|
const [photoSrc, setPhotoSrc] = useState<string>("");
|
|
24
24
|
const [croppedImageDataUrl, setCroppedImageDataUrl] = useState<string>("");
|
|
25
25
|
const cropperRef = useRef<HTMLImageElement>(null);
|
|
26
|
-
|
|
26
|
+
const timeoutRef = useRef<number | null>(null);
|
|
27
|
+
|
|
28
|
+
// Cleanup timeout on unmount
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
return () => {
|
|
31
|
+
if (timeoutRef.current !== null) {
|
|
32
|
+
window.clearTimeout(timeoutRef.current);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}, []);
|
|
27
36
|
|
|
28
37
|
const handleSave = () => {
|
|
29
|
-
console.log('ImageEditor handleSave called, croppedImageDataUrl:', croppedImageDataUrl ? 'Data URL available' : 'No data URL');
|
|
30
38
|
props.onUpdate(croppedImageDataUrl);
|
|
31
39
|
};
|
|
32
40
|
|
|
@@ -43,7 +51,6 @@ export function ImageEditor(props: Props) {
|
|
|
43
51
|
const reader = new FileReader();
|
|
44
52
|
reader.onload = () => {
|
|
45
53
|
const url = reader.result.toString();
|
|
46
|
-
console.log('ImageEditor file uploaded, setting photoSrc');
|
|
47
54
|
setPhotoSrc(url);
|
|
48
55
|
setCroppedImageDataUrl("");
|
|
49
56
|
};
|
|
@@ -85,12 +92,12 @@ export function ImageEditor(props: Props) {
|
|
|
85
92
|
}
|
|
86
93
|
|
|
87
94
|
const handleCrop = () => {
|
|
88
|
-
if (
|
|
89
|
-
window.clearTimeout(
|
|
90
|
-
|
|
95
|
+
if (timeoutRef.current !== null) {
|
|
96
|
+
window.clearTimeout(timeoutRef.current);
|
|
97
|
+
timeoutRef.current = null;
|
|
91
98
|
}
|
|
92
99
|
|
|
93
|
-
|
|
100
|
+
timeoutRef.current = window.setTimeout(() => {
|
|
94
101
|
if (cropperRef.current !== null) {
|
|
95
102
|
const imageElement: any = cropperRef?.current;
|
|
96
103
|
const cropper: any = imageElement?.cropper;
|
|
@@ -105,7 +112,6 @@ export function ImageEditor(props: Props) {
|
|
|
105
112
|
}
|
|
106
113
|
|
|
107
114
|
const url = cropper.getCroppedCanvas({ width, height }).toDataURL("image/png", 0.4);
|
|
108
|
-
console.log('ImageEditor handleCrop setting croppedImageDataUrl');
|
|
109
115
|
setCroppedImageDataUrl(url);
|
|
110
116
|
}
|
|
111
117
|
}, 200);
|
|
@@ -92,8 +92,8 @@ export const PageHeader: React.FC<PageHeaderProps> = ({ icon, title, subtitle, c
|
|
|
92
92
|
{/* Statistics row */}
|
|
93
93
|
{statistics && statistics.length > 0 && (
|
|
94
94
|
<Stack id="page-header-statistics" direction={{ xs: "column", sm: "row" }} spacing={3} sx={{ mt: 3 }}>
|
|
95
|
-
{statistics.map((stat
|
|
96
|
-
<Stack key={
|
|
95
|
+
{statistics.map((stat) => (
|
|
96
|
+
<Stack key={stat.label} direction="row" spacing={1} alignItems="center">
|
|
97
97
|
{React.cloneElement(stat.icon as React.ReactElement<any>, { sx: { color: "#FFF", fontSize: 20 } })}
|
|
98
98
|
<Typography variant="h6" sx={{ color: "#FFF", fontWeight: 600, mr: 1 }}>
|
|
99
99
|
{stat.value}
|
|
@@ -42,9 +42,9 @@ export const QuestionEdit = React.forwardRef<any, Props>(({noBackground = false,
|
|
|
42
42
|
let choiceOptions = [];
|
|
43
43
|
if (q.choices !== undefined && q.choices !== null) {
|
|
44
44
|
if (q.fieldType === "Multiple Choice") {
|
|
45
|
-
for (let i = 0; i < q.choices.length; i++) choiceOptions.push(<MenuItem key={i} value={q.choices[i].value}>{q.choices[i].text}</MenuItem>);
|
|
45
|
+
for (let i = 0; i < q.choices.length; i++) choiceOptions.push(<MenuItem key={q.choices[i].value} value={q.choices[i].value}>{q.choices[i].text}</MenuItem>);
|
|
46
46
|
} else if (q.fieldType === "Checkbox") {
|
|
47
|
-
for (let i = 0; i < q.choices.length; i++) choiceOptions.push(<FormControlLabel key={i} label={q.choices[i].text} control={<Checkbox onChange={handleCheck} name={q.choices[i].value} />} />);
|
|
47
|
+
for (let i = 0; i < q.choices.length; i++) choiceOptions.push(<FormControlLabel key={q.choices[i].value} label={q.choices[i].text} control={<Checkbox onChange={handleCheck} name={q.choices[i].value} />} />);
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
|
|
@@ -22,7 +22,7 @@ export const SmallButton = React.forwardRef<HTMLDivElement, Props>((props, ref)
|
|
|
22
22
|
const handleClick = (e: React.MouseEvent) => {
|
|
23
23
|
e.preventDefault();
|
|
24
24
|
if (props.href) setRedirectUrl(props.href);
|
|
25
|
-
else props.onClick(e);
|
|
25
|
+
else if (props.onClick) props.onClick(e);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
const style = (props.text)
|
|
@@ -29,7 +29,6 @@ export const GalleryModal: React.FC<Props> = (props: Props) => {
|
|
|
29
29
|
const loadData = () => { ApiHelper.get("/gallery/" + aspectRatio.toString(), "ContentApi").then((data: any) => setImages(data.images)); }
|
|
30
30
|
|
|
31
31
|
const handleImageUpdated = async (dataUrl: string) => {
|
|
32
|
-
console.log('handleImageUpdated called with dataUrl:', dataUrl ? 'Data URL received' : 'Empty dataUrl');
|
|
33
32
|
|
|
34
33
|
if (!dataUrl) {
|
|
35
34
|
console.warn('No dataUrl provided to handleImageUpdated');
|
|
@@ -42,15 +41,12 @@ export const GalleryModal: React.FC<Props> = (props: Props) => {
|
|
|
42
41
|
const file = new File([blob], "file_name");
|
|
43
42
|
|
|
44
43
|
const params = { folder: aspectRatio.toString(), fileName };
|
|
45
|
-
console.log('Attempting to upload image with params:', params);
|
|
46
44
|
|
|
47
45
|
const presigned = await ApiHelper.post("/gallery/requestUpload", params, "ContentApi");
|
|
48
46
|
const doUpload = presigned.key !== undefined;
|
|
49
47
|
|
|
50
48
|
if (doUpload) {
|
|
51
|
-
console.log('Upload successful, uploading to presigned URL');
|
|
52
49
|
await FileHelper.postPresignedFile(presigned, file, () => { });
|
|
53
|
-
console.log('Image uploaded successfully');
|
|
54
50
|
} else {
|
|
55
51
|
console.warn('Upload failed - no presigned key received');
|
|
56
52
|
}
|
|
@@ -75,10 +71,10 @@ export const GalleryModal: React.FC<Props> = (props: Props) => {
|
|
|
75
71
|
|
|
76
72
|
const getImages = () => {
|
|
77
73
|
let result: React.ReactElement[] = [];
|
|
78
|
-
images.forEach((img: any) => {
|
|
74
|
+
images.forEach((img: any, index: number) => {
|
|
79
75
|
const parts = img.split("/");
|
|
80
76
|
|
|
81
|
-
result.push(<Grid size={{ xs: 12, md: 4 }}>
|
|
77
|
+
result.push(<Grid key={img || index} size={{ xs: 12, md: 4 }}>
|
|
82
78
|
<Box sx={{ position: "relative", ":hover #deleteIcon": { visibility: "visible" } }}>
|
|
83
79
|
<a href="about:blank" onClick={(e) => { e.preventDefault(); props.onSelect(contentRoot + "/" + img) }} aria-label="Select image" data-testid="select-image">
|
|
84
80
|
<Box
|
|
@@ -11,8 +11,8 @@ export const SecondaryMenu= (props:Props) => {
|
|
|
11
11
|
const getItems = () => {
|
|
12
12
|
const result:any[] = [];
|
|
13
13
|
props.menuItems.forEach((item, index) => {
|
|
14
|
-
if (item.label === props.label) result.push(<Chip key={
|
|
15
|
-
else result.push(<a key={
|
|
14
|
+
if (item.label === props.label) result.push(<Chip key={item.url} onClick={() => props.onNavigate(item.url)} label={item.label} component="a" variant="filled" clickable style={{backgroundColor:"var(--c1d2)", color:"#FFF", fontSize:16}} />);
|
|
15
|
+
else result.push(<a key={item.url} href="about:blank" onClick={(e) => { e.preventDefault(); props.onNavigate(item.url) }} style={{ color:"#FFF", textDecoration: "none", marginLeft:10, marginRight:10}}>{item.label}</a>);
|
|
16
16
|
});
|
|
17
17
|
return result;
|
|
18
18
|
}
|
|
@@ -52,9 +52,6 @@ export const SiteHeader = React.memo((props:Props) => {
|
|
|
52
52
|
|
|
53
53
|
// Create a stable context object to prevent UserMenu recreation
|
|
54
54
|
const stableContext = React.useMemo(() => {
|
|
55
|
-
console.log('SiteHeader - Creating stableContext');
|
|
56
|
-
console.log('SiteHeader - props.context:', props.context);
|
|
57
|
-
console.log('SiteHeader - props.context.userChurches:', props.context?.userChurches);
|
|
58
55
|
|
|
59
56
|
if (!props.context) return undefined;
|
|
60
57
|
|
|
@@ -59,11 +59,11 @@ export const Note: React.FC<Props> = (props) => {
|
|
|
59
59
|
</Stack>
|
|
60
60
|
<Box>
|
|
61
61
|
{contents.map((c, i) => c ? (
|
|
62
|
-
<Typography key={i} variant="body2" sx={{ mb: 0.5 }}>
|
|
62
|
+
<Typography key={`content-${i}-${c.substring(0, 20)}`} variant="body2" sx={{ mb: 0.5 }}>
|
|
63
63
|
{c}
|
|
64
64
|
</Typography>
|
|
65
65
|
) : (
|
|
66
|
-
<Box key={i} sx={{ height: '1em' }} />
|
|
66
|
+
<Box key={`empty-${i}`} sx={{ height: '1em' }} />
|
|
67
67
|
))}
|
|
68
68
|
</Box>
|
|
69
69
|
</Box>
|
|
@@ -10,18 +10,15 @@ import { Locale } from "../../helpers";
|
|
|
10
10
|
export interface Props { userChurches: LoginUserChurchInterface[], currentUserChurch: LoginUserChurchInterface, context: UserContextInterface, onDelete?: () => void, onChurchChange?: () => void }
|
|
11
11
|
|
|
12
12
|
export const ChurchList: React.FC<Props> = props => {
|
|
13
|
-
console.log('ChurchList - Rendering with props:', props);
|
|
14
|
-
|
|
15
13
|
const [userChurches, setUserChurches] = useState(() => {
|
|
16
14
|
try {
|
|
17
15
|
// If we have currentUserChurch, use it as fallback
|
|
18
16
|
if (props.currentUserChurch && (!props.userChurches || !Array.isArray(props.userChurches))) {
|
|
19
|
-
console.log('ChurchList - Using currentUserChurch as single item array');
|
|
20
17
|
return [props.currentUserChurch];
|
|
21
18
|
}
|
|
22
|
-
|
|
19
|
+
|
|
23
20
|
let churches = props.userChurches;
|
|
24
|
-
|
|
21
|
+
|
|
25
22
|
// Ensure we have an array
|
|
26
23
|
if (!Array.isArray(churches)) {
|
|
27
24
|
console.warn('ChurchList - Expected array but got:', typeof churches, churches);
|
|
@@ -31,9 +28,7 @@ export const ChurchList: React.FC<Props> = props => {
|
|
|
31
28
|
}
|
|
32
29
|
churches = [];
|
|
33
30
|
}
|
|
34
|
-
|
|
35
|
-
console.log('ChurchList - Processing churches array:', churches);
|
|
36
|
-
|
|
31
|
+
|
|
37
32
|
// Filter for valid userChurch objects (should have church property)
|
|
38
33
|
const validChurches = churches.filter(uc => {
|
|
39
34
|
const isValid = uc && uc.church && uc.church.id;
|
|
@@ -42,14 +37,12 @@ export const ChurchList: React.FC<Props> = props => {
|
|
|
42
37
|
}
|
|
43
38
|
return isValid;
|
|
44
39
|
});
|
|
45
|
-
|
|
40
|
+
|
|
46
41
|
// If no valid churches but we have currentUserChurch, use it
|
|
47
42
|
if (validChurches.length === 0 && props.currentUserChurch) {
|
|
48
|
-
console.log('ChurchList - No valid churches found, using currentUserChurch');
|
|
49
43
|
return [props.currentUserChurch];
|
|
50
44
|
}
|
|
51
|
-
|
|
52
|
-
console.log('ChurchList - Valid churches:', validChurches);
|
|
45
|
+
|
|
53
46
|
return validChurches;
|
|
54
47
|
} catch (error) {
|
|
55
48
|
console.error('ChurchList - Error processing churches:', error);
|
|
@@ -133,9 +126,7 @@ export const ChurchList: React.FC<Props> = props => {
|
|
|
133
126
|
key={userChurch.church.id}
|
|
134
127
|
selected={(uc.church.id === props.currentUserChurch.church.id) && true}
|
|
135
128
|
onClick={async () => {
|
|
136
|
-
console.log('ChurchList - Selecting church:', userChurch.church.name);
|
|
137
129
|
await UserHelper.selectChurch(props.context, userChurch.church.id, null);
|
|
138
|
-
console.log('ChurchList - Church selected');
|
|
139
130
|
|
|
140
131
|
// Call the onChurchChange callback if provided
|
|
141
132
|
if (props.onChurchChange) {
|
|
@@ -62,7 +62,6 @@ export const NewPrivateMessage: React.FC<Props> = (props) => {
|
|
|
62
62
|
}
|
|
63
63
|
} catch (error) {
|
|
64
64
|
// No existing conversation found, continue to create new one
|
|
65
|
-
console.log("No existing conversation found for person:", person.id);
|
|
66
65
|
}
|
|
67
66
|
setSelectedPerson(person);
|
|
68
67
|
}
|
|
@@ -161,7 +160,7 @@ export const NewPrivateMessage: React.FC<Props> = (props) => {
|
|
|
161
160
|
{isSearching && (
|
|
162
161
|
<Box>
|
|
163
162
|
{[...Array(3)].map((_, index) => (
|
|
164
|
-
<Box key={index} sx={{ display: 'flex', alignItems: 'center', mb: 2 }}>
|
|
163
|
+
<Box key={`skeleton-${index}`} sx={{ display: 'flex', alignItems: 'center', mb: 2 }}>
|
|
165
164
|
<Skeleton variant="circular" width={48} height={48} sx={{ mr: 2 }} />
|
|
166
165
|
<Skeleton variant="text" width="60%" height={24} />
|
|
167
166
|
</Box>
|
|
@@ -205,7 +205,7 @@ export const Notifications: React.FC<Props> = (props) => {
|
|
|
205
205
|
{isLoading ? (
|
|
206
206
|
<Box sx={{ p: 2 }}>
|
|
207
207
|
{[...Array(3)].map((_, index) => (
|
|
208
|
-
<Box key={index} sx={{ display: 'flex', alignItems: 'center', mb: 2 }}>
|
|
208
|
+
<Box key={`skeleton-${index}`} sx={{ display: 'flex', alignItems: 'center', mb: 2 }}>
|
|
209
209
|
<Skeleton variant="circular" width={48} height={48} sx={{ mr: 2 }} />
|
|
210
210
|
<Box sx={{ flex: 1 }}>
|
|
211
211
|
<Skeleton variant="text" width="80%" height={24} />
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import React from "react";
|
|
4
|
-
import {
|
|
5
|
-
Paper,
|
|
6
|
-
Box,
|
|
7
|
-
Typography,
|
|
8
|
-
Stack,
|
|
9
|
-
IconButton
|
|
10
|
-
useTheme
|
|
4
|
+
import {
|
|
5
|
+
Paper,
|
|
6
|
+
Box,
|
|
7
|
+
Typography,
|
|
8
|
+
Stack,
|
|
9
|
+
IconButton
|
|
11
10
|
} from "@mui/material";
|
|
12
11
|
import { ArrowBack as ArrowBackIcon } from "@mui/icons-material";
|
|
13
12
|
import { PrivateMessageInterface, UserContextInterface } from "@churchapps/helpers";
|
|
@@ -24,24 +23,19 @@ interface Props {
|
|
|
24
23
|
}
|
|
25
24
|
|
|
26
25
|
export const PrivateMessageDetails: React.FC<Props> = (props) => {
|
|
27
|
-
const theme = useTheme();
|
|
28
26
|
|
|
29
27
|
// Clear notification when conversation is opened
|
|
30
28
|
React.useEffect(() => {
|
|
31
29
|
const clearNotification = async () => {
|
|
32
30
|
if (props.privateMessage.notifyPersonId === props.context.person.id) {
|
|
33
31
|
try {
|
|
34
|
-
console.log("Marking private message as read:", props.privateMessage.id);
|
|
35
|
-
|
|
36
32
|
// Clear the notification by getting the private message details
|
|
37
33
|
await ApiHelper.get(`/privateMessages/${props.privateMessage.id}`, "MessagingApi");
|
|
38
|
-
|
|
34
|
+
|
|
39
35
|
// Manually refresh notification counts to ensure immediate UI update
|
|
40
36
|
const notificationService = NotificationService.getInstance();
|
|
41
37
|
await notificationService.refresh();
|
|
42
|
-
|
|
43
|
-
console.log("Private message marked as read and notifications refreshed");
|
|
44
|
-
|
|
38
|
+
|
|
45
39
|
// Notify parent component that message was marked as read
|
|
46
40
|
if (props.onMessageRead) {
|
|
47
41
|
props.onMessageRead();
|
|
@@ -527,7 +527,7 @@ export const PrivateMessages: React.FC<Props> = React.memo((props) => {
|
|
|
527
527
|
{isLoading ? (
|
|
528
528
|
<Box sx={{ p: 2 }}>
|
|
529
529
|
{[...Array(3)].map((_, index) => (
|
|
530
|
-
<Box key={index} sx={{ px: 2, py: 0.5, mb: 1 }}>
|
|
530
|
+
<Box key={`skeleton-${index}`} sx={{ px: 2, py: 0.5, mb: 1 }}>
|
|
531
531
|
<Box sx={{
|
|
532
532
|
p: 3,
|
|
533
533
|
borderRadius: 3,
|