=== Eye Viewer Log Cleared at 2025-12-08 19:27:05 +0000 ===
[22:27:05] [CRASH] No crash detected - clearing logs
[22:27:05] [FONT] Roboto fonts loaded successfully: Roboto-Regular
[22:27:05] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto
[22:27:05] [GIPHY] SDK not available - using REST API fallback
[22:27:05] [BACKGROUND] Background fetch enabled
[22:27:05] [PRELOAD] ⥠Starting message pre-load during authentication...
[22:27:05] [SECURITY] Initial launch - timeout exceeded (28.157299995422363s > 0.0s)
[22:27:05] [AUTH] Starting PIN authentication
[22:27:05] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[22:27:05] [CLIENT_SIG] Connecting to session ILUIWU as Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[22:27:05] [LIFECYCLE] ViewController deallocated
[22:27:05] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[22:27:05] [SECURITY] â ī¸ Skipping timeout check - conditions not met
[22:27:05] [PUSH_DEBUG] đĸ App became ACTIVE - resetting badges and triggering pollEventsNow
[22:27:05] [PUSH] APNs token: ea74d1b23419aba9c7f42f122ceaac51082c3477711ef6cb1bbd1988f213ab7f
[22:27:06] [CLIENT_SIG] WebSocket opened
[22:27:06] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[22:27:06] [CLIENT_SIG] Connected! clientId=bXSmw0VaPYYrnsoo
[22:27:07] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[22:27:07] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[22:27:07] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"ea74d1b23419aba9c7f42f122ceaac51082c3477711ef6cb1bbd1988f213ab7f","role":"viewer","muted":1,"removed_from_other_channels":0}
[22:27:07] [PIN_AUTH] Correct PIN
[22:27:07] [SECURITY] Restored real session: ILUIWU
[22:27:07] [SECURITY] Restored real session: ILUIWU
[22:27:07] [SECURITY] Saved real session: ILUIWU
[22:27:07] [SCENE] Launched directly to chat view with sessionId: ILUIWU
[22:27:07] [AUDIO] â
Chat mode - audio will be managed by WebRTCViewer (no microphone)
[22:27:07] Documents Directory: /var/mobile/Containers/Data/Application/9556D5A4-2E36-41AC-9D7C-8DDEBE138717/Documents
[22:27:07] [THEME] Applying current theme
[22:27:07] [CHAT] Applied day theme (mode: day)
[22:27:07] [SECURITY] Saved real session: ILUIWU
[22:27:07] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[22:27:07] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[22:27:08] [SUMMARY] Already triggered summary today (2025-12-08)
[22:27:08] Did transition
[22:27:08] [UPLOAD_QUEUE] Found 3 pending uploads to resume
[22:27:08] [MODE] đ updateModeUI called - currentTabIndex=0, sessionId=ILUIWU
[22:27:08] [VIEWER] Screen lock enabled - normal idle behavior
[22:27:08] [QUERY] đ Creating query connection for iOS slave: iosILUIWU
[22:27:08] [DATA AUDIO] ========== setupWebRTC() START ==========
[22:27:08] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device
[22:27:08] [DATA AUDIO] Creating encoder/decoder factories...
[22:27:08] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1
[22:27:08] [CODEC] Viewer selected encoder: AV1 (best quality)
[22:27:08] [DATA AUDIO] Creating RTCPeerConnectionFactory...
[22:27:08] [DATA AUDIO] â
Factory created
[22:27:08] [DATA AUDIO] RTCAudioSession locked
[22:27:08] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false
[22:27:08] [DATA AUDIO] RTCAudioSession unlocked
[22:27:08] [DATA AUDIO] Setting AVAudioSession to .playback for data channel with mixWithOthers...
[22:27:08] [DATA AUDIO] â
AVAudioSession set to .playback with .mixWithOthers
[22:27:08] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU
[22:27:08] [WS] Opening session at ws://crivello.dyndns.org:8081/
[22:27:08] [QUERY] â
tempQueryConnection created for iosILUIWU
[22:27:08] [VIEWER_INIT] Already have 50 messages - just filtering for tab
[22:27:08] [EMOJI] â
Loaded 451 emoji-to-GIF mappings
[22:27:08] [EVENT_POLL] Event polling disabled - using WebSocket events instead
[22:27:08] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0
[22:27:08] [SUMMARY] Already triggered summary today (2025-12-08)
[22:27:08] Did transition
[22:27:08] [USER] Registering user: EDAD55A1-003F-415D-AA60-672B34B504FE, name: Esra
[22:27:08] [CHUNK] Merged 382 reactions synchronously
[22:27:08] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[22:27:08] [MIGRATION] No messages need sender_name backfill
[22:27:08] [GALLERY_DB] Raw datesent for msg 4309: '2025-12-08 19:02:10'
[22:27:08] [GALLERY_DB] Raw datesent for msg 4301: '2025-12-08 18:53:38'
[22:27:08] [GALLERY_DB] Raw datesent for msg 4253: '2025-12-08 11:59:28'
[22:27:08] [GALLERY_DB] â
Loaded 207 media messages
[22:27:08] [INCREMENTAL_SYNC] đĄ Fetching messages since ID 4317
[22:27:08] [GALLERY] Filtered 207 -> 190 (only with local thumbnails)
[22:27:08] [GALLERY] First 5 after sort (newest first):
[22:27:08] [GALLERY] 0: id=4309, date=2025-12-08 19:02:10, file=7f5c64456effb085.png
[22:27:08] [GALLERY] 1: id=4301, date=2025-12-08 18:53:38, file=71742c3d78ed2063.jpg
[22:27:08] [GALLERY] 2: id=4253, date=2025-12-08 11:59:28, file=10dabda8d04dc725.jpg
[22:27:08] [GALLERY] 3: id=4227, date=2025-12-08 08:35:52, file=5abfa51ac84672ca.jpg
[22:27:08] [GALLERY] 4: id=4225, date=2025-12-08 06:51:17, file=a59f6ea5b913297d.jpg
[22:27:08] [CELL_UPLOAD] configure: msgId=4309, file=7f5c64456effb085.png, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:27:08] [CELL_UPLOAD] â no active progress, using msg.uploadStatus=0 â complete
[22:27:08] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=7f5c64456effb085.png, overlayExists=true
[22:27:08] [SERVER] Starting reconnect polling (5s interval)
[22:27:08] [ICONS] Screen width: 440.0, Tab spacing: 75.5
[22:27:08] [ICONS] Offset applied: -14.6
[22:27:08] [ICONS] New left margin: 11.2, New right margin: 11.3
[22:27:08] [ICONS] Chat center: (31.2, 87.0)
[22:27:08] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5
[22:27:08] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5
[22:27:08] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5
[22:27:08] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5
[22:27:08] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5
[22:27:08] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2
[22:27:08] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3
[22:27:08] [ICONS] Screen width: 440.0
[22:27:08] [USER] â
User registered successfully
[22:27:08] [USER] User registration successful
[22:27:08] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[22:27:08] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[22:27:08] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[22:27:08] Token POST â https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU
[22:27:09] [INCREMENTAL_SYNC] â
No new messages
[22:27:09] [PURGE] â ī¸ Media cache purge DISABLED for debugging
[22:27:09] [UPLOAD_RECOVERY] Checking for missing uploads...
[22:27:09] [UPLOAD_RECOVERY] Checking 17 media files on server...
[22:27:09] new_session POST ok: token len=157
[22:27:09] HELLO â sent (fetched token, role=query)
[22:27:10] [UPLOAD_RECOVERY] â Missing on server, local exists: 1ad0647655c35d25.mov
[22:27:10] [SIG] hello_ok received for query connection - ready to query agents
[22:27:10] [SIG] get_agents request sent for sessionId=ILUIWU
[22:27:10] [SIG] get_agents request sent for sessionId=iosILUIWU
[22:27:10] [SERVER] Stopped reconnect polling
[22:27:10] [UPLOAD_RECOVERY] â Missing on server, local exists: c8f0aac386a60643.jpg
[22:27:10] [SIG] agents_list received: []
[22:27:10] [SIG] agents_list received: []
[22:27:10] [UPLOAD_RECOVERY] â Missing on server, local exists: 65b3c13d384997a5.mov
[22:27:10] [UPLOAD_RECOVERY] â Missing on server, local exists: fb94b5fb89c4a48d.mov
[22:27:11] [UPLOAD_RECOVERY] â Missing on server, local exists: c8f0aac386a60643.jpg
[22:27:11] [UPLOAD_RECOVERY] đ Re-uploading 5 missing files...
[22:27:11] [UPLOAD_QUEUE] â ī¸ Duplicate prevented: 1ad0647655c35d25.mov already in queue (id=543, status=uploading_chunked)
[22:27:11] [UPLOAD_RECOVERY] â
Re-uploaded: 1ad0647655c35d25.mov
[22:27:11] [UPLOAD_QUEUE] â ī¸ Duplicate prevented: c8f0aac386a60643.jpg already in queue (id=537, status=uploading)
[22:27:11] [UPLOAD_RECOVERY] â
Re-uploaded: c8f0aac386a60643.jpg
[22:27:11] [UPLOAD_QUEUE] â ī¸ Duplicate prevented: 65b3c13d384997a5.mov already in queue (id=538, status=uploading_chunked)
[22:27:11] [UPLOAD_RECOVERY] â
Re-uploaded: 65b3c13d384997a5.mov
[22:27:11] [UPLOAD_QUEUE] â ī¸ Duplicate prevented: fb94b5fb89c4a48d.mov already in queue (id=539, status=uploading_chunked)
[22:27:11] [UPLOAD_RECOVERY] â
Re-uploaded: fb94b5fb89c4a48d.mov
[22:27:11] [UPLOAD_QUEUE] â ī¸ Duplicate prevented: c8f0aac386a60643.jpg already in queue (id=537, status=uploading)
[22:27:11] [UPLOAD_RECOVERY] â
Re-uploaded: c8f0aac386a60643.jpg
[22:27:11] [UPLOAD_RECOVERY] âī¸ Thumbnail already on server: t_fb94b5fb89c4a48d.jpg
[22:27:11] [UPLOAD_RECOVERY] âī¸ Thumbnail already on server: t_65b3c13d384997a5.jpg
[22:27:11] [UPLOAD_RECOVERY] âī¸ Thumbnail already on server: t_c8f0aac386a60643.jpg
[22:27:11] [UPLOAD_RECOVERY] âī¸ Thumbnail already on server: t_1ad0647655c35d25.jpg
[22:27:12] [UPLOAD_RECOVERY] âī¸ Thumbnail already on server: t_c8f0aac386a60643.jpg
[22:27:13] [PRELOAD] Fetched 3215 messages
[22:27:14] [PRELOAD] ⥠Cached 3215 messages for instant display
[22:27:17] [REPLY_DEBUG] đ¤ didTapSend - Sending message WITHOUT reply
[22:27:17] [ANIMATION] đŦ Animating 1 new bubbles - scrolling to top to show them
[22:27:17] [REPLY_DEBUG] â cancelReply called - clearing messageToReplyTo
[22:27:17] [REPLY_DEBUG] â ī¸ sendMessage HTTP BODY - No reply message captured
[22:27:17] [COMBINED_FETCH] Loaded 3215 read receipts, 382 messages with reactions
[22:27:17] [READBY_ENRICH] Enriched 48 messages with readBy data
[22:27:17] [ANIMATION] đŦ Animating 1 new bubbles - scrolling to top to show them
[22:27:18] [MENU] đ dismissAnyExistingMenu called
[22:27:18] [MENU] âšī¸ No menu with tag 9999 found
[22:27:18] [MENU] â
dismissAnyExistingMenu completed
[22:27:18] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:27:18] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=false
[22:27:18] [SEARCH] đ First pull on Tab 0 - showing search bar instead of refresh
[22:27:18] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[22:27:18] [SEARCH] â
Setting isSearchBarVisible = true
[22:27:18] [SEARCH] chatSearchBar is nil? false
[22:27:18] [SEARCH] Applied theme: day
[22:27:18] [SEARCH] Adjusting table contentInset.top by +56.0
[22:27:18] [SEARCH] Table contentInset.top: 0.0 -> 56.0
[22:27:18] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=true
[22:27:18] [CHAT] top pull-to-refresh triggered on tab 0
[22:27:18] [CHANNEL_SWITCH] đĄ Fetching URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?viewer=1&session_id=ILUIWU&mark_read=0&viewer_id=EDAD55A1-003F-415D-AA60-672B34B504FE
[22:27:18] [SEARCH] Focusing search field
[22:27:18] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:18] [SEARCH] contentOffset.y=-175.33333333333334, topInset=116.0, pullDistance=59.33333333333334
[22:27:18] [SEARCH] threshold=80.0, isSearchBarVisible=true
[22:27:18] [SEARCH] topRefresh.isRefreshing=true
[22:27:18] [SEARCH] â Pull distance 59.33333333333334 < threshold 80.0
[22:27:18] [MENU] đ dismissAnyExistingMenu called
[22:27:18] [MENU] âšī¸ No menu with tag 9999 found
[22:27:18] [MENU] â
dismissAnyExistingMenu completed
[22:27:18] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=true, tab=0
[22:27:18] [SEARCH] đŊ Hiding search bar (user started scrolling)
[22:27:18] [SEARCH] hideSearchBar() called - animated=true, isSearchBarVisible=true
[22:27:18] [SEARCH] â
Setting isSearchBarVisible = false
[22:27:18] [SEARCH] Adjusting table contentInset.top by -56.0
[22:27:18] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:18] [SEARCH] contentOffset.y=-112.66666666666667, topInset=60.0, pullDistance=52.66666666666667
[22:27:18] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:27:18] [SEARCH] topRefresh.isRefreshing=true
[22:27:18] [SEARCH] â Pull distance 52.66666666666667 < threshold 80.0
[22:27:18] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=7f5c64456effb085.png, overlayExists=true
[22:27:18] [CELL_UPLOAD] configure: msgId=4309, file=7f5c64456effb085.png, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:27:18] [CELL_UPLOAD] â no active progress, using msg.uploadStatus=0 â complete
[22:27:18] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=7f5c64456effb085.png, overlayExists=true
[22:27:19] [SCROLL_BTN] Showing button - scrolled 383pt > half 379pt
[22:27:19] [MENU] đ dismissAnyExistingMenu called
[22:27:19] [MENU] âšī¸ No menu with tag 9999 found
[22:27:19] [MENU] â
dismissAnyExistingMenu completed
[22:27:19] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:27:19] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:19] [SEARCH] contentOffset.y=399.0, topInset=60.0, pullDistance=-459.0
[22:27:19] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:27:19] [SEARCH] topRefresh.isRefreshing=true
[22:27:19] [SEARCH] â Pull distance -459.0 < threshold 80.0
[22:27:19] [CLIENT_SIG] Event received: type=0 messageId=4318
[22:27:19] [WS_EVENT] Received event: type=0, messageId=4318
[22:27:19] [WS_EVENT] New message notification - refreshing
[22:27:19] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":4318,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2025-12-08 19:27:17"}
[22:27:19] [CHAT] receive_message.php JSON: ["datesent_utc": 2025-12-08 19:27:17, "message_type": 0, "message_id": 4318, "session_id": ILUIWU, "file_name": , "ok": 1]
[22:27:19] ReloadData 9
[22:27:19] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=7f5c64456effb085.png, overlayExists=true
[22:27:19] [CELL_UPLOAD] configure: msgId=4309, file=7f5c64456effb085.png, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:27:19] [CELL_UPLOAD] â no active progress, using msg.uploadStatus=0 â complete
[22:27:19] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=7f5c64456effb085.png, overlayExists=true
[22:27:19] [MENU] đ dismissAnyExistingMenu called
[22:27:19] [MENU] âšī¸ No menu with tag 9999 found
[22:27:19] [MENU] â
dismissAnyExistingMenu completed
[22:27:19] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:27:19] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:19] [SEARCH] contentOffset.y=962.6666666666666, topInset=60.0, pullDistance=-1022.6666666666666
[22:27:19] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:27:19] [SEARCH] topRefresh.isRefreshing=true
[22:27:19] [SEARCH] â Pull distance -1022.6666666666666 < threshold 80.0
[22:27:19] [CELL_UPLOAD] configure: msgId=4302, file=1ad0647655c35d25.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:27:19] [CELL_UPLOAD] â no active progress, using msg.uploadStatus=0 â complete
[22:27:19] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=1ad0647655c35d25.mov, overlayExists=true
[22:27:19] [CELL_UPLOAD] configure: msgId=4301, file=71742c3d78ed2063.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:27:19] [CELL_UPLOAD] â no active progress, using msg.uploadStatus=0 â complete
[22:27:19] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=71742c3d78ed2063.jpg, overlayExists=true
[22:27:19] [MENU] đ dismissAnyExistingMenu called
[22:27:19] [MENU] âšī¸ No menu with tag 9999 found
[22:27:19] [MENU] â
dismissAnyExistingMenu completed
[22:27:19] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:27:20] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:20] [SEARCH] contentOffset.y=1562.6666666666667, topInset=60.0, pullDistance=-1622.6666666666667
[22:27:20] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:27:20] [SEARCH] topRefresh.isRefreshing=true
[22:27:20] [SEARCH] â Pull distance -1622.6666666666667 < threshold 80.0
[22:27:20] [MENU] đ dismissAnyExistingMenu called
[22:27:20] [MENU] âšī¸ No menu with tag 9999 found
[22:27:20] [MENU] â
dismissAnyExistingMenu completed
[22:27:20] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:27:20] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:20] [SEARCH] contentOffset.y=1658.6666666666667, topInset=60.0, pullDistance=-1718.6666666666667
[22:27:20] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:27:20] [SEARCH] topRefresh.isRefreshing=true
[22:27:20] [SEARCH] â Pull distance -1718.6666666666667 < threshold 80.0
[22:27:21] [MENU] đ dismissAnyExistingMenu called
[22:27:21] [MENU] âšī¸ No menu with tag 9999 found
[22:27:21] [MENU] â
dismissAnyExistingMenu completed
[22:27:21] [MENU] đ¨ Created button 'Reply' at index 0, frame: (0.0, 0.0, 120.0, 44.0), userInteraction: true
[22:27:21] [MENU] đ¨ Created button 'Unhide' at index 1, frame: (0.0, 44.0, 120.0, 44.0), userInteraction: true
[22:27:21] [MENU] đ¨ Created button 'Delete' at index 2, frame: (0.0, 88.0, 120.0, 44.0), userInteraction: true
[22:27:21] [MENU] đ Menu added to view - frame: (172.0, 671.5333333333333, 96.0, 105.60000000000002), userInteraction: true
[22:27:21] [MENU] đ Menu has 5 subviews (buttons + separators)
[22:27:22] [MENU] đ dismissMenu gesture triggered - tap on blur view
[22:27:22] [MENU] đ Dismissing menu (tap was on blur, outside menu area)
[22:27:23] [MENU] đ dismissAnyExistingMenu called
[22:27:23] [MENU] âšī¸ No menu with tag 9999 found
[22:27:23] [MENU] â
dismissAnyExistingMenu completed
[22:27:23] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:27:23] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:23] [SEARCH] contentOffset.y=1536.3333333333333, topInset=60.0, pullDistance=-1596.3333333333333
[22:27:23] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:27:23] [SEARCH] topRefresh.isRefreshing=true
[22:27:23] [SEARCH] â Pull distance -1596.3333333333333 < threshold 80.0
[22:27:23] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=7f5c64456effb085.png, overlayExists=true
[22:27:23] [CELL_UPLOAD] configure: msgId=4309, file=7f5c64456effb085.png, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:27:23] [CELL_UPLOAD] â no active progress, using msg.uploadStatus=0 â complete
[22:27:23] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=7f5c64456effb085.png, overlayExists=true
[22:27:23] [MENU] đ dismissAnyExistingMenu called
[22:27:23] [MENU] âšī¸ No menu with tag 9999 found
[22:27:23] [MENU] â
dismissAnyExistingMenu completed
[22:27:23] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:27:23] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:23] [SEARCH] contentOffset.y=906.3333333333334, topInset=60.0, pullDistance=-966.3333333333334
[22:27:23] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:27:23] [SEARCH] topRefresh.isRefreshing=true
[22:27:23] [SEARCH] â Pull distance -966.3333333333334 < threshold 80.0
[22:27:24] [MENU] đ dismissAnyExistingMenu called
[22:27:24] [MENU] âšī¸ No menu with tag 9999 found
[22:27:24] [MENU] â
dismissAnyExistingMenu completed
[22:27:24] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:27:24] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:24] [SEARCH] contentOffset.y=455.6666666666667, topInset=60.0, pullDistance=-515.6666666666667
[22:27:24] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:27:24] [SEARCH] topRefresh.isRefreshing=true
[22:27:24] [SEARCH] â Pull distance -515.6666666666667 < threshold 80.0
[22:27:24] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[22:27:24] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[22:27:24] [UPLOAD_DEBUG] Item ID: 543
[22:27:24] [UPLOAD_DEBUG] Item ID: 538
[22:27:24] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/9556D5A4-2E36-41AC-9D7C-8DDEBE138717/Documents/MediaCache/1ad0647655c35d25.mov
[22:27:24] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/9556D5A4-2E36-41AC-9D7C-8DDEBE138717/Documents/MediaCache/65b3c13d384997a5.mov
[22:27:24] [UPLOAD_DEBUG] Random filename: 1ad0647655c35d25.mov
[22:27:24] [UPLOAD_DEBUG] Random filename: 65b3c13d384997a5.mov
[22:27:24] [UPLOAD_DEBUG] Session ID: ILUIWU
[22:27:24] [UPLOAD_DEBUG] Session ID: ILUIWU
[22:27:24] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[22:27:24] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[22:27:24] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[22:27:24] [UPLOAD_DEBUG] Item ID: 539
[22:27:24] [UPLOAD_DEBUG] Retry count: 3
[22:27:24] [UPLOAD_DEBUG] Retry count: 3
[22:27:24] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/9556D5A4-2E36-41AC-9D7C-8DDEBE138717/Documents/MediaCache/fb94b5fb89c4a48d.mov
[22:27:24] [UPLOAD_DEBUG] Random filename: fb94b5fb89c4a48d.mov
[22:27:24] [UPLOAD_DEBUG] Session ID: ILUIWU
[22:27:24] [UPLOAD_DEBUG] File exists: true
[22:27:24] [UPLOAD_DEBUG] File exists: true
[22:27:24] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[22:27:24] [UPLOAD_DEBUG] Retry count: 3
[22:27:24] [UPLOAD_DEBUG] File exists: true
[22:27:24] [UPLOAD_STATUS] Updated in-memory status=2 for file: 1ad0647655c35d25.mov
[22:27:24] [UPLOAD_STATUS] Updated status=2 for file: 1ad0647655c35d25.mov
[22:27:24] [UPLOAD_STATUS] Updated status=2 for file: 65b3c13d384997a5.mov
[22:27:24] [UPLOAD_STATUS] Updated status=2 for file: fb94b5fb89c4a48d.mov
[22:27:24] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=1ad0647655c35d25.mov, overlayExists=true
[22:27:24] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:27:24] [UPLOAD_DEBUG] File size: 1267972117 bytes (1209.2 MB)
[22:27:24] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[22:27:24] [UPLOAD_DEBUG] â Using CHUNKED upload (file > threshold)
[22:27:24] [UPLOAD_DEBUG] --- startChunkedUpload ---
[22:27:24] [UPLOAD_DEBUG] Chunked upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_chunked.php
[22:27:24] [UPLOAD_DEBUG] File size: 1267972117 bytes (1209.2 MB)
[22:27:24] [UPLOAD_DEBUG] File size: 959895378 bytes (915.4 MB)
[22:27:24] [UPLOAD_DEBUG] Chunk size: 104857600 bytes (100 MB)
[22:27:24] [UPLOAD_DEBUG] File size: 1267972117 bytes (1209.2 MB)
[22:27:24] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[22:27:24] [UPLOAD_DEBUG] â Using CHUNKED upload (file > threshold)
[22:27:24] [UPLOAD_DEBUG] --- startChunkedUpload ---
[22:27:24] [UPLOAD_DEBUG] Chunked upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_chunked.php
[22:27:24] [UPLOAD_DEBUG] File size: 1267972117 bytes (1209.2 MB)
[22:27:24] [UPLOAD_DEBUG] Chunk size: 104857600 bytes (100 MB)
[22:27:24] [UPLOAD_DEBUG] Total chunks: 13
[22:27:24] [UPLOAD_DEBUG] Total chunks: 13
[22:27:24] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[22:27:24] [UPLOAD_DEBUG] Updated DB status to 'uploading_chunked'
[22:27:24] [UPLOAD_DEBUG] â Using CHUNKED upload (file > threshold)
[22:27:24] [CHUNKED_RESUME] Checking resume: item.currentChunk=0, item.totalChunks=13, calculated totalChunks=13
[22:27:24] [UPLOAD_DEBUG] Starting chunk upload sequence from chunk 0...
[22:27:24] [UPLOAD_DEBUG] --- startChunkedUpload ---
[22:27:24] [UPLOAD_DEBUG] Chunked upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_chunked.php
[22:27:24] [UPLOAD_DEBUG] File size: 959895378 bytes (915.4 MB)
[22:27:24] [UPLOAD_DEBUG] Chunk size: 104857600 bytes (100 MB)
[22:27:24] [UPLOAD_DEBUG] Total chunks: 10
[22:27:24] [UPLOAD_DEBUG] Updated DB status to 'uploading_chunked'
[22:27:24] [CHUNKED_RESUME] Checking resume: item.currentChunk=0, item.totalChunks=10, calculated totalChunks=10
[22:27:24] [UPLOAD_DEBUG] Starting chunk upload sequence from chunk 0...
[22:27:24] [UPLOAD_DEBUG] Updated DB status to 'uploading_chunked'
[22:27:24] [CHUNKED_RESUME] Saved chunk info: totalChunks=13, fileSize=1267972117
[22:27:24] [CHUNKED_RESUME] Checking resume: item.currentChunk=0, item.totalChunks=13, calculated totalChunks=13
[22:27:24] [UPLOAD_DEBUG] Starting chunk upload sequence from chunk 0...
[22:27:24] [CHUNKED_RESUME] Saved chunk info: totalChunks=13, fileSize=1267972117
[22:27:24] [CHUNKED_RESUME] Saved chunk info: totalChunks=10, fileSize=959895378
[22:27:24] [MENU] đ dismissAnyExistingMenu called
[22:27:24] [MENU] âšī¸ No menu with tag 9999 found
[22:27:24] [MENU] â
dismissAnyExistingMenu completed
[22:27:24] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:27:24] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:24] [SEARCH] contentOffset.y=34.0, topInset=60.0, pullDistance=-94.0
[22:27:24] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:27:24] [SEARCH] topRefresh.isRefreshing=true
[22:27:24] [SEARCH] â Pull distance -94.0 < threshold 80.0
[22:27:25] [MENU] đ dismissAnyExistingMenu called
[22:27:25] [MENU] âšī¸ No menu with tag 9999 found
[22:27:25] [MENU] â
dismissAnyExistingMenu completed
[22:27:25] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:27:25] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:25] [SEARCH] contentOffset.y=-201.66666666666666, topInset=60.0, pullDistance=141.66666666666666
[22:27:25] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:27:25] [SEARCH] topRefresh.isRefreshing=true
[22:27:25] [SEARCH] â
Pull distance 141.66666666666666 >= threshold 80.0
[22:27:25] [SEARCH] đ Showing search bar (first pull)
[22:27:25] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[22:27:25] [SEARCH] â
Setting isSearchBarVisible = true
[22:27:25] [SEARCH] chatSearchBar is nil? false
[22:27:25] [SEARCH] Applied theme: day
[22:27:25] [SEARCH] Adjusting table contentInset.top by +56.0
[22:27:25] [SEARCH] Table contentInset.top: 0.0 -> 56.0
[22:27:25] [SEARCH] Focusing search field
[22:27:25] [PENDING_UPLOAD] Found pending message: id=-4, file=, uploadStatus=0
[22:27:25] [PENDING_UPLOAD] Found pending message: id=4302, file=1ad0647655c35d25.mov, uploadStatus=2
[22:27:25] [PENDING_UPLOAD] Found pending message: id=-9, file=c8f0aac386a60643.jpg, uploadStatus=2
[22:27:25] [PENDING_UPLOAD] Found pending message: id=4104, file=65b3c13d384997a5.mov, uploadStatus=2
[22:27:25] [PENDING_UPLOAD] Found pending message: id=4103, file=fb94b5fb89c4a48d.mov, uploadStatus=2
[22:27:25] [PENDING_UPLOAD] Total pending upload messages: 5
[22:27:25] [PENDING_UPLOAD] Preserved 5 pending messages before server refresh
[22:27:25] [PENDING_UPLOAD] Reinserting 5 pending messages
[22:27:25] [PENDING_UPLOAD] â
Reinserted message -4
[22:27:25] [PENDING_UPLOAD] â
Reinserted message 4302
[22:27:25] [PENDING_UPLOAD] â
Reinserted message -9
[22:27:25] [PENDING_UPLOAD] â
Reinserted message 4104
[22:27:25] [PENDING_UPLOAD] â
Reinserted message 4103
[22:27:26] [MENU] đ dismissAnyExistingMenu called
[22:27:26] [MENU] âšī¸ No menu with tag 9999 found
[22:27:26] [MENU] â
dismissAnyExistingMenu completed
[22:27:26] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=true, tab=0
[22:27:26] [SEARCH] đŊ Hiding search bar (user started scrolling)
[22:27:26] [SEARCH] hideSearchBar() called - animated=true, isSearchBarVisible=true
[22:27:26] [SEARCH] â
Setting isSearchBarVisible = false
[22:27:26] [SEARCH] Adjusting table contentInset.top by -56.0
[22:27:26] DOWNLOADIIING t_66e5f4c7c82fef18.jpg
[22:27:26] DOWNLOADIIING t_97828ef5de49a612.jpg
[22:27:26] [CHANNEL_SWITCH] đ About to set loaded messages. Count=3216
[22:27:26] [CHANNEL_SWITCH] đ Setting allMessagesWithReadBy = 3216 msgs
[22:27:26] [READBY_LOADED] msg 4318: readBy.count=0, readBy=[], isMyMsg=true
[22:27:26] [READBY_LOADED] msg 4317: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:27:26] [READBY_LOADED] msg 4316: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:27:26] [READBY_LOADED] msg 4315: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:27:26] [READBY_LOADED] msg 4314: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:27:26] [PENDING_UPLOAD] â
Merged pending message id=-4, file=
[22:27:26] [PENDING_UPLOAD] âī¸ Skipped pending message id=4302 - already exists in server data
[22:27:26] [PENDING_UPLOAD] âī¸ Skipped pending message id=-9 - already exists in server data
[22:27:26] [PENDING_UPLOAD] âī¸ Skipped pending message id=4104 - already exists in server data
[22:27:26] [PENDING_UPLOAD] âī¸ Skipped pending message id=4103 - already exists in server data
[22:27:26] [PENDING_UPLOAD] Final merged count: 3217 (server: 3216, kept pending: 1)
[22:27:26] [CHANNEL_SWITCH] đ chatRows.count = 3265
[22:27:26] ReloadData 15 (3217 messages loaded, 17 pending media)
[22:27:26] DOWNLOADIIING 1b1a78050ebe099b.jpg
[22:27:26] DOWNLOADIIING bae538c2a3076c11.heic
[22:27:26] DOWNLOADIIING ee42d57ffd8ab767.jpg
[22:27:26] DOWNLOADIIING 5cfd84d52271d308.heic
[22:27:26] DOWNLOADIIING 0f2dda66cccdeadf.heic
[22:27:26] DOWNLOADIIING 2a4c7380908d6595.jpg
[22:27:26] [PULL_REFRESH] Loaded 3217 messages (first page), displaying 3217 for tab 0, hasMore: true
[22:27:26] ReloadData 15 (pull-to-refresh completed)
[22:27:26] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:26] [SEARCH] contentOffset.y=-218.66666666666666, topInset=0.0, pullDistance=218.66666666666666
[22:27:26] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:27:26] [SEARCH] topRefresh.isRefreshing=false
[22:27:26] [SEARCH] â
Pull distance 218.66666666666666 >= threshold 80.0
[22:27:26] [SEARCH] đ Showing search bar (first pull)
[22:27:26] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[22:27:26] [SEARCH] â
Setting isSearchBarVisible = true
[22:27:26] [SEARCH] chatSearchBar is nil? false
[22:27:26] [SEARCH] Applied theme: day
[22:27:26] [SEARCH] Adjusting table contentInset.top by +56.0
[22:27:26] [SEARCH] Table contentInset.top: 0.0 -> 56.0
[22:27:27] [SEARCH] Focusing search field
[22:27:27] [SEARCH] Found 1 messages matching 'pop' in local DB
[22:27:27] [SEARCH] Found 1 matches for 'pop'
[22:27:27] ReloadData 14 (all 17 media thumbnails loaded) - applying tab 0 filtering
[22:27:28] [MENU] đ dismissAnyExistingMenu called
[22:27:28] [MENU] âšī¸ No menu with tag 9999 found
[22:27:28] [MENU] â
dismissAnyExistingMenu completed
[22:27:28] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=true, tab=0
[22:27:28] [SEARCH] đŊ Hiding search bar (user started scrolling)
[22:27:28] [SEARCH] hideSearchBar() called - animated=true, isSearchBarVisible=true
[22:27:28] [SEARCH] â
Setting isSearchBarVisible = false
[22:27:28] [SEARCH] Adjusting table contentInset.top by -56.0
[22:27:28] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=7f5c64456effb085.png, overlayExists=true
[22:27:28] [CELL_UPLOAD] configure: msgId=4309, file=7f5c64456effb085.png, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:27:28] [CELL_UPLOAD] â no active progress, using msg.uploadStatus=0 â complete
[22:27:28] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=7f5c64456effb085.png, overlayExists=true
[22:27:29] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:29] [SEARCH] contentOffset.y=7.333333333333333, topInset=0.0, pullDistance=-7.333333333333333
[22:27:29] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:27:29] [SEARCH] topRefresh.isRefreshing=false
[22:27:29] [SEARCH] â Pull distance -7.333333333333333 < threshold 80.0
[22:27:32] [MENU] đ dismissAnyExistingMenu called
[22:27:32] [MENU] âšī¸ No menu with tag 9999 found
[22:27:32] [MENU] â
dismissAnyExistingMenu completed
[22:27:32] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:27:32] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=7f5c64456effb085.png, overlayExists=true
[22:27:32] [CELL_UPLOAD] configure: msgId=4309, file=7f5c64456effb085.png, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:27:32] [CELL_UPLOAD] â no active progress, using msg.uploadStatus=0 â complete
[22:27:32] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=7f5c64456effb085.png, overlayExists=true
[22:27:32] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:32] [SEARCH] contentOffset.y=108.66666666666667, topInset=0.0, pullDistance=-108.66666666666667
[22:27:32] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:27:32] [SEARCH] topRefresh.isRefreshing=false
[22:27:32] [SEARCH] â Pull distance -108.66666666666667 < threshold 80.0
[22:27:32] [SCROLL_BTN] Showing button - scrolled 401pt > half 379pt
[22:27:32] [MENU] đ dismissAnyExistingMenu called
[22:27:32] [MENU] âšī¸ No menu with tag 9999 found
[22:27:32] [MENU] â
dismissAnyExistingMenu completed
[22:27:32] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:27:32] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:32] [SEARCH] contentOffset.y=741.3333333333334, topInset=0.0, pullDistance=-741.3333333333334
[22:27:32] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:27:32] [SEARCH] topRefresh.isRefreshing=false
[22:27:32] [SEARCH] â Pull distance -741.3333333333334 < threshold 80.0
[22:27:32] [MENU] đ dismissAnyExistingMenu called
[22:27:32] [MENU] âšī¸ No menu with tag 9999 found
[22:27:32] [MENU] â
dismissAnyExistingMenu completed
[22:27:32] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:27:32] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:32] [SEARCH] contentOffset.y=970.3333333333334, topInset=0.0, pullDistance=-970.3333333333334
[22:27:32] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:27:32] [SEARCH] topRefresh.isRefreshing=false
[22:27:32] [SEARCH] â Pull distance -970.3333333333334 < threshold 80.0
[22:27:32] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=1ad0647655c35d25.mov, overlayExists=true
[22:27:32] [CELL_UPLOAD] configure: msgId=4302, file=1ad0647655c35d25.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:27:32] [CELL_UPLOAD] â no active progress, using msg.uploadStatus=0 â complete
[22:27:32] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=1ad0647655c35d25.mov, overlayExists=true
[22:27:33] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=71742c3d78ed2063.jpg, overlayExists=true
[22:27:33] [CELL_UPLOAD] configure: msgId=4301, file=71742c3d78ed2063.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:27:33] [CELL_UPLOAD] â no active progress, using msg.uploadStatus=0 â complete
[22:27:33] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=71742c3d78ed2063.jpg, overlayExists=true
[22:27:33] [MENU] đ dismissAnyExistingMenu called
[22:27:33] [MENU] âšī¸ No menu with tag 9999 found
[22:27:33] [MENU] â
dismissAnyExistingMenu completed
[22:27:33] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:27:33] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:33] [SEARCH] contentOffset.y=1401.6666666666667, topInset=0.0, pullDistance=-1401.6666666666667
[22:27:33] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:27:33] [SEARCH] topRefresh.isRefreshing=false
[22:27:33] [SEARCH] â Pull distance -1401.6666666666667 < threshold 80.0
[22:27:34] [MENU] đ dismissAnyExistingMenu called
[22:27:34] [MENU] âšī¸ No menu with tag 9999 found
[22:27:34] [MENU] â
dismissAnyExistingMenu completed
[22:27:34] [MENU] đ¨ Created button 'Reply' at index 0, frame: (0.0, 0.0, 120.0, 44.0), userInteraction: true
[22:27:34] [MENU] đ¨ Created button 'Unhide' at index 1, frame: (0.0, 44.0, 120.0, 44.0), userInteraction: true
[22:27:34] [MENU] đ¨ Created button 'Delete' at index 2, frame: (0.0, 88.0, 120.0, 44.0), userInteraction: true
[22:27:34] [MENU] đ Menu added to view - frame: (172.0, 821.2, 96.0, 105.60000000000002), userInteraction: true
[22:27:34] [MENU] đ Menu has 5 subviews (buttons + separators)
[22:27:35] [MENU] đ menuButtonTouchDown - button title: Delete, tag: 2
[22:27:35] [MENU] đ¯ menuButtonTapped - button title: Delete, tag: 2
[22:27:35] [MENU] đ¯ Button frame: (0.0, 88.0, 120.0, 44.0), superview: true
[22:27:35] [MENU] đ Found action closure, dismissing menu first
[22:27:35] [MENU] đ dismissAnyExistingMenu called
[22:27:35] [MENU] đī¸ Found menu with tag 9999, removing
[22:27:35] [MENU] đī¸ Removing blur effect
[22:27:35] [MENU] đ Recorded dismissal time for debounce
[22:27:35] [MENU] â
dismissAnyExistingMenu completed
[22:27:35] [MENU] đ Menu dismissed, executing action
[22:27:35] [DELETE] đī¸ requestDeleteMessage called for message id=4302
[22:27:35] [MENU] đ dismissAnyExistingMenu called
[22:27:35] [MENU] âšī¸ No menu with tag 9999 found
[22:27:35] [MENU] â
dismissAnyExistingMenu completed
[22:27:36] DOWNLOADIIING 1b1a78050ebe099b.jpg
[22:27:36] DOWNLOADIIING bae538c2a3076c11.heic
[22:27:36] DOWNLOADIIING ee42d57ffd8ab767.jpg
[22:27:36] DOWNLOADIIING 5cfd84d52271d308.heic
[22:27:36] DOWNLOADIIING 0f2dda66cccdeadf.heic
[22:27:36] DOWNLOADIIING 2a4c7380908d6595.jpg
[22:27:36] [MENU] â
Action executed
[22:27:36] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=71742c3d78ed2063.jpg, overlayExists=true
[22:27:36] [CELL_UPLOAD] configure: msgId=4301, file=71742c3d78ed2063.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:27:36] [CELL_UPLOAD] â no active progress, using msg.uploadStatus=0 â complete
[22:27:36] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=71742c3d78ed2063.jpg, overlayExists=true
[22:27:37] [MENU] đ dismissAnyExistingMenu called
[22:27:37] [MENU] âšī¸ No menu with tag 9999 found
[22:27:37] [MENU] â
dismissAnyExistingMenu completed
[22:27:37] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:27:37] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:37] [SEARCH] contentOffset.y=1364.6666666666667, topInset=0.0, pullDistance=-1364.6666666666667
[22:27:37] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:27:37] [SEARCH] topRefresh.isRefreshing=false
[22:27:37] [SEARCH] â Pull distance -1364.6666666666667 < threshold 80.0
[22:27:37] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=1ad0647655c35d25.mov, overlayExists=true
[22:27:37] [CELL_UPLOAD] configure: msgId=4309, file=7f5c64456effb085.png, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:27:37] [CELL_UPLOAD] â no active progress, using msg.uploadStatus=0 â complete
[22:27:37] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=7f5c64456effb085.png, overlayExists=true
[22:27:37] [MENU] đ dismissAnyExistingMenu called
[22:27:37] [MENU] âšī¸ No menu with tag 9999 found
[22:27:37] [MENU] â
dismissAnyExistingMenu completed
[22:27:37] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:27:37] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:37] [SEARCH] contentOffset.y=465.0, topInset=0.0, pullDistance=-465.0
[22:27:37] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:27:37] [SEARCH] topRefresh.isRefreshing=false
[22:27:37] [SEARCH] â Pull distance -465.0 < threshold 80.0
[22:27:38] [MENU] đ dismissAnyExistingMenu called
[22:27:38] [MENU] âšī¸ No menu with tag 9999 found
[22:27:38] [MENU] â
dismissAnyExistingMenu completed
[22:27:38] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:27:38] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:38] [SEARCH] contentOffset.y=32.666666666666664, topInset=0.0, pullDistance=-32.666666666666664
[22:27:38] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:27:38] [SEARCH] topRefresh.isRefreshing=false
[22:27:38] [SEARCH] â Pull distance -32.666666666666664 < threshold 80.0
[22:27:38] [MENU] đ dismissAnyExistingMenu called
[22:27:38] [MENU] âšī¸ No menu with tag 9999 found
[22:27:38] [MENU] â
dismissAnyExistingMenu completed
[22:27:38] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:27:38] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=7f5c64456effb085.png, overlayExists=true
[22:27:38] [CELL_UPLOAD] configure: msgId=4309, file=7f5c64456effb085.png, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:27:38] [CELL_UPLOAD] â no active progress, using msg.uploadStatus=0 â complete
[22:27:38] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=7f5c64456effb085.png, overlayExists=true
[22:27:39] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:27:39] [SEARCH] contentOffset.y=48.333333333333336, topInset=0.0, pullDistance=-48.333333333333336
[22:27:39] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:27:39] [SEARCH] topRefresh.isRefreshing=false
[22:27:39] [SEARCH] â Pull distance -48.333333333333336 < threshold 80.0
[22:27:40] [PUSH] Silent push received
[22:27:40] [PUSH_EMBED] No embedded message_data in notification
[22:27:40] [PUSH] No embedded data, pre-loading messages from server
[22:27:40] [PUSH_PRELOAD] Fetching messages for instant display cache
[22:27:40] [CLIENT_SIG] Event received: type=1 messageId=4302
[22:27:40] [WS_EVENT] Received event: type=1, messageId=4302
[22:27:40] [WS_EVENT] Message deleted: 4302
[22:27:40] [CHAT] delete_message.php HTTP 200
ââ Response Headers ââ
Keep-Alive: timeout=5, max=100
Content-Length: 66
Connection: Keep-Alive
Server: Apache/2.4.65 (Debian)
Content-Type: application/json; charset=utf-8
Date: Mon, 08 Dec 2025 19:27:38 GMT
ââ Body ââ
{"ok":true,"event_type":1,"message_id":4302,"session_id":"ILUIWU"}
[22:27:50] [PUSH_PRELOAD] Fetched 3215 messages - caching for instant display
[22:27:51] [PUSH_PRELOAD] ⥠Pre-cached 3215 messages for instant display
[22:27:52] [PUSH_PRELOAD] â
Pre-load complete with thumbnails
[22:27:52] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("message_id"): 4302, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 1]
[22:27:52] [PUSH] Parsed message_id: 4302
[22:27:52] [PUSH] Parsed operation_type: 1
[22:27:52] [PUSH] Taking direct action: opType=1, messageId=4302
[22:27:52] [PUSH] TakeActionFromPush called: OperationType=1, MessageIds=4302
[22:27:52] [COMBINED_FETCH] Loaded 3215 read receipts, 382 messages with reactions
[22:27:52] DOWNLOADIIING 1b1a78050ebe099b.jpg
[22:27:52] DOWNLOADIIING bae538c2a3076c11.heic
[22:27:52] DOWNLOADIIING ee42d57ffd8ab767.jpg
[22:27:52] DOWNLOADIIING 5cfd84d52271d308.heic
[22:27:52] DOWNLOADIIING 0f2dda66cccdeadf.heic
[22:27:52] DOWNLOADIIING 2a4c7380908d6595.jpg
[22:27:57] [CRASH] Previous session did not exit cleanly - crash detected
[22:27:57] [FONT] Roboto fonts loaded successfully: Roboto-Regular
[22:27:57] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto
[22:27:57] [GIPHY] SDK not available - using REST API fallback
[22:27:57] [BACKGROUND] Background fetch enabled
[22:27:57] [PRELOAD] ⥠Starting message pre-load during authentication...
[22:27:57] [AUTH] Starting PIN authentication
[22:27:57] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[22:27:57] [CLIENT_SIG] Connecting to session ILUIWU as Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[22:27:57] [LIFECYCLE] ViewController deallocated
[22:27:57] [PUSH] APNs token: ea74d1b23419aba9c7f42f122ceaac51082c3477711ef6cb1bbd1988f213ab7f
[22:27:58] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[22:27:58] [SECURITY] â ī¸ Skipping timeout check - conditions not met
[22:27:58] [PUSH_DEBUG] đĸ App became ACTIVE - resetting badges and triggering pollEventsNow
[22:27:58] [CLIENT_SIG] WebSocket opened
[22:27:58] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[22:27:58] [CLIENT_SIG] Connected! clientId=p-2R1OwFL_fr9NJE
[22:27:58] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[22:27:58] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[22:27:58] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"ea74d1b23419aba9c7f42f122ceaac51082c3477711ef6cb1bbd1988f213ab7f","role":"viewer","muted":1,"removed_from_other_channels":0}
[22:27:59] [PRELOAD] Fetched 3215 messages
[22:27:59] [PIN_AUTH] Correct PIN
[22:27:59] [SECURITY] Restored real session: ILUIWU
[22:27:59] [SECURITY] Restored real session: ILUIWU
[22:27:59] [PRELOAD] ⥠Cached 3215 messages for instant display
[22:28:00] [SECURITY] Saved real session: ILUIWU
[22:28:00] [SCENE] Launched directly to chat view with sessionId: ILUIWU
[22:28:00] [AUDIO] â
Chat mode - audio will be managed by WebRTCViewer (no microphone)
[22:28:00] Documents Directory: /var/mobile/Containers/Data/Application/64241746-612B-4D3F-BB76-5F6D5F47B8AD/Documents
[22:28:00] [UPLOAD_QUEUE] Found 3 pending uploads to resume
[22:28:00] [UPLOAD_QUEUE] File not found for upload id=538, marking as failed
[22:28:00] [UPLOAD_QUEUE] File not found for upload id=539, marking as failed
[22:28:00] [UPLOAD_QUEUE] File not found for upload id=543, marking as failed
[22:28:00] [THEME] Applying current theme
[22:28:00] [CHAT] Applied day theme (mode: day)
[22:28:00] [SECURITY] Saved real session: ILUIWU
[22:28:00] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[22:28:00] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[22:28:00] [SUMMARY] Already triggered summary today (2025-12-08)
[22:28:00] Did transition
[22:28:00] [MODE] đ updateModeUI called - currentTabIndex=0, sessionId=ILUIWU
[22:28:00] [VIEWER] Screen lock enabled - normal idle behavior
[22:28:00] [QUERY] đ Creating query connection for iOS slave: iosILUIWU
[22:28:00] [DATA AUDIO] ========== setupWebRTC() START ==========
[22:28:00] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device
[22:28:00] [DATA AUDIO] Creating encoder/decoder factories...
[22:28:00] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1
[22:28:00] [CODEC] Viewer selected encoder: AV1 (best quality)
[22:28:00] [DATA AUDIO] Creating RTCPeerConnectionFactory...
[22:28:00] [DATA AUDIO] â
Factory created
[22:28:00] [DATA AUDIO] RTCAudioSession locked
[22:28:00] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false
[22:28:00] [DATA AUDIO] RTCAudioSession unlocked
[22:28:00] [DATA AUDIO] Setting AVAudioSession to .playback for data channel with mixWithOthers...
[22:28:00] [DATA AUDIO] â
AVAudioSession set to .playback with .mixWithOthers
[22:28:00] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU
[22:28:00] [WS] Opening session at ws://crivello.dyndns.org:8081/
[22:28:00] [QUERY] â
tempQueryConnection created for iosILUIWU
[22:28:00] [VIEWER_INIT] Already have 50 messages - just filtering for tab
[22:28:00] [EMOJI] â
Loaded 451 emoji-to-GIF mappings
[22:28:00] [EVENT_POLL] Event polling disabled - using WebSocket events instead
[22:28:00] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0
[22:28:00] [SUMMARY] Already triggered summary today (2025-12-08)
[22:28:00] Did transition
[22:28:00] [USER] Registering user: EDAD55A1-003F-415D-AA60-672B34B504FE, name: Esra
[22:28:00] [CHUNK] Merged 383 reactions synchronously
[22:28:00] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[22:28:00] [MIGRATION] No messages need sender_name backfill
[22:28:00] [GALLERY_DB] Raw datesent for msg 4309: '2025-12-08 19:02:10'
[22:28:00] [GALLERY_DB] Raw datesent for msg 4301: '2025-12-08 18:53:38'
[22:28:00] [GALLERY_DB] Raw datesent for msg 4253: '2025-12-08 11:59:28'
[22:28:00] [GALLERY_DB] â
Loaded 207 media messages
[22:28:00] [INCREMENTAL_SYNC] đĄ Fetching messages since ID 4318
[22:28:00] [GALLERY] Filtered 207 -> 190 (only with local thumbnails)
[22:28:00] [GALLERY] First 5 after sort (newest first):
[22:28:00] [GALLERY] 0: id=4309, date=2025-12-08 19:02:10, file=7f5c64456effb085.png
[22:28:00] [GALLERY] 1: id=4301, date=2025-12-08 18:53:38, file=71742c3d78ed2063.jpg
[22:28:00] [GALLERY] 2: id=4253, date=2025-12-08 11:59:28, file=10dabda8d04dc725.jpg
[22:28:00] [GALLERY] 3: id=4227, date=2025-12-08 08:35:52, file=5abfa51ac84672ca.jpg
[22:28:00] [GALLERY] 4: id=4225, date=2025-12-08 06:51:17, file=a59f6ea5b913297d.jpg
[22:28:00] [USER] â
User registered successfully
[22:28:00] [USER] User registration successful
[22:28:00] [SERVER] Starting reconnect polling (5s interval)
[22:28:00] [ICONS] Screen width: 440.0, Tab spacing: 75.5
[22:28:00] [ICONS] Offset applied: -14.6
[22:28:00] [ICONS] New left margin: 11.2, New right margin: 11.3
[22:28:00] [INCREMENTAL_SYNC] â
No new messages
[22:28:00] [PURGE] â ī¸ Media cache purge DISABLED for debugging
[22:28:00] [UPLOAD_RECOVERY] Checking for missing uploads...
[22:28:00] [UPLOAD_RECOVERY] Checking 16 media files on server...
[22:28:00] [ICONS] Chat center: (31.2, 87.0)
[22:28:00] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5
[22:28:00] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5
[22:28:00] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5
[22:28:00] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5
[22:28:00] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5
[22:28:00] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2
[22:28:00] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3
[22:28:00] [ICONS] Screen width: 440.0
[22:28:00] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[22:28:00] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[22:28:00] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[22:28:00] Token POST â https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU
[22:28:00] [UPLOAD_RECOVERY] â Missing on server, local exists: c8f0aac386a60643.jpg
[22:28:00] [UPLOAD_RECOVERY] â Missing on server, local exists: 65b3c13d384997a5.mov
[22:28:00] [UPLOAD_RECOVERY] â Missing on server, local exists: fb94b5fb89c4a48d.mov
[22:28:00] [UPLOAD_RECOVERY] â Missing on server, local exists: c8f0aac386a60643.jpg
[22:28:00] [UPLOAD_RECOVERY] đ Re-uploading 4 missing files...
[22:28:00] [UPLOAD_QUEUE] â ī¸ Duplicate prevented: c8f0aac386a60643.jpg already in queue (id=537, status=uploading)
[22:28:00] [UPLOAD_RECOVERY] â
Re-uploaded: c8f0aac386a60643.jpg
[22:28:00] new_session POST ok: token len=157
[22:28:00] HELLO â sent (fetched token, role=query)
[22:28:00] [UPLOAD_RECOVERY] âī¸ Skipping large file (915.4 MB): 65b3c13d384997a5.mov
[22:28:00] [UPLOAD_RECOVERY] âī¸ Skipping large file (1209.2 MB): fb94b5fb89c4a48d.mov
[22:28:00] [UPLOAD_QUEUE] â ī¸ Duplicate prevented: c8f0aac386a60643.jpg already in queue (id=537, status=uploading)
[22:28:00] [UPLOAD_RECOVERY] â
Re-uploaded: c8f0aac386a60643.jpg
[22:28:00] [UPLOAD_RECOVERY] âī¸ Thumbnail already on server: t_c8f0aac386a60643.jpg
[22:28:00] [UPLOAD_RECOVERY] âī¸ Thumbnail already on server: t_fb94b5fb89c4a48d.jpg
[22:28:00] [UPLOAD_RECOVERY] âī¸ Thumbnail already on server: t_c8f0aac386a60643.jpg
[22:28:00] [UPLOAD_RECOVERY] âī¸ Thumbnail already on server: t_65b3c13d384997a5.jpg
[22:28:00] [SIG] hello_ok received for query connection - ready to query agents
[22:28:00] [SIG] get_agents request sent for sessionId=ILUIWU
[22:28:00] [SIG] get_agents request sent for sessionId=iosILUIWU
[22:28:00] [SERVER] Stopped reconnect polling
[22:28:01] [SIG] agents_list received: []
[22:28:01] [SIG] agents_list received: []
[22:28:01] [COMBINED_FETCH] Loaded 3215 read receipts, 382 messages with reactions
[22:28:01] [READBY_ENRICH] Enriched 50 messages with readBy data
[22:28:07] [MENU] đ dismissAnyExistingMenu called
[22:28:07] [MENU] âšī¸ No menu with tag 9999 found
[22:28:07] [MENU] â
dismissAnyExistingMenu completed
[22:28:07] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:28:07] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=false
[22:28:07] [SEARCH] đ First pull on Tab 0 - showing search bar instead of refresh
[22:28:07] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[22:28:07] [SEARCH] â
Setting isSearchBarVisible = true
[22:28:07] [SEARCH] chatSearchBar is nil? false
[22:28:07] [SEARCH] Applied theme: day
[22:28:07] [SEARCH] Adjusting table contentInset.top by +56.0
[22:28:07] [SEARCH] Table contentInset.top: 0.0 -> 56.0
[22:28:07] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=true
[22:28:07] [CHAT] top pull-to-refresh triggered on tab 0
[22:28:07] [CHANNEL_SWITCH] đĄ Fetching URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?viewer=1&session_id=ILUIWU&mark_read=0&viewer_id=EDAD55A1-003F-415D-AA60-672B34B504FE
[22:28:07] [SEARCH] Focusing search field
[22:28:07] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:28:07] [SEARCH] contentOffset.y=-141.0, topInset=116.0, pullDistance=25.0
[22:28:07] [SEARCH] threshold=80.0, isSearchBarVisible=true
[22:28:07] [SEARCH] topRefresh.isRefreshing=true
[22:28:07] [SEARCH] â Pull distance 25.0 < threshold 80.0
[22:28:08] [MENU] đ dismissAnyExistingMenu called
[22:28:08] [MENU] âšī¸ No menu with tag 9999 found
[22:28:08] [MENU] â
dismissAnyExistingMenu completed
[22:28:08] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=true, tab=0
[22:28:08] [SEARCH] đŊ Hiding search bar (user started scrolling)
[22:28:08] [SEARCH] hideSearchBar() called - animated=true, isSearchBarVisible=true
[22:28:08] [SEARCH] â
Setting isSearchBarVisible = false
[22:28:08] [SEARCH] Adjusting table contentInset.top by -56.0
[22:28:09] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:28:09] [SEARCH] contentOffset.y=15.0, topInset=60.0, pullDistance=-75.0
[22:28:09] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:28:09] [SEARCH] topRefresh.isRefreshing=true
[22:28:09] [SEARCH] â Pull distance -75.0 < threshold 80.0
[22:28:09] [PENDING_UPLOAD] Found pending message: id=-4, file=, uploadStatus=0
[22:28:09] [PENDING_UPLOAD] Found pending message: id=-9, file=c8f0aac386a60643.jpg, uploadStatus=2
[22:28:09] [PENDING_UPLOAD] Total pending upload messages: 2
[22:28:09] [PENDING_UPLOAD] Preserved 2 pending messages before server refresh
[22:28:09] [PENDING_UPLOAD] Reinserting 2 pending messages
[22:28:09] [PENDING_UPLOAD] â
Reinserted message -4
[22:28:09] [PENDING_UPLOAD] â
Reinserted message -9
[22:28:09] DOWNLOADIIING t_66e5f4c7c82fef18.jpg
[22:28:09] DOWNLOADIIING t_97828ef5de49a612.jpg
[22:28:09] [CHANNEL_SWITCH] đ About to set loaded messages. Count=3215
[22:28:09] [CHANNEL_SWITCH] đ Setting allMessagesWithReadBy = 3215 msgs
[22:28:09] [READBY_LOADED] msg 4318: readBy.count=0, readBy=[], isMyMsg=true
[22:28:09] [READBY_LOADED] msg 4317: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:28:09] [READBY_LOADED] msg 4316: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:28:09] [READBY_LOADED] msg 4315: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:28:09] [READBY_LOADED] msg 4314: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:28:09] [PENDING_UPLOAD] â
Merged pending message id=-4, file=
[22:28:09] [PENDING_UPLOAD] âī¸ Skipped pending message id=-9 - already exists in server data
[22:28:09] [PENDING_UPLOAD] Final merged count: 3216 (server: 3215, kept pending: 1)
[22:28:09] [CHANNEL_SWITCH] đ chatRows.count = 3264
[22:28:09] ReloadData 15 (3216 messages loaded, 17 pending media)
[22:28:10] DOWNLOADIIING 1b1a78050ebe099b.jpg
[22:28:10] DOWNLOADIIING bae538c2a3076c11.heic
[22:28:10] DOWNLOADIIING ee42d57ffd8ab767.jpg
[22:28:10] DOWNLOADIIING 5cfd84d52271d308.heic
[22:28:10] DOWNLOADIIING 0f2dda66cccdeadf.heic
[22:28:10] DOWNLOADIIING 2a4c7380908d6595.jpg
[22:28:10] [PULL_REFRESH] Loaded 3216 messages (first page), displaying 3216 for tab 0, hasMore: true
[22:28:10] ReloadData 15 (pull-to-refresh completed)
[22:28:10] ReloadData 14 (all 17 media thumbnails loaded) - applying tab 0 filtering
[22:28:12] [MENU] đ dismissAnyExistingMenu called
[22:28:12] [MENU] âšī¸ No menu with tag 9999 found
[22:28:12] [MENU] â
dismissAnyExistingMenu completed
[22:28:12] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:28:13] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:28:13] [SEARCH] contentOffset.y=31.666666666666668, topInset=0.0, pullDistance=-31.666666666666668
[22:28:13] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:28:13] [SEARCH] topRefresh.isRefreshing=false
[22:28:13] [SEARCH] â Pull distance -31.666666666666668 < threshold 80.0
[22:28:13] [MENU] đ dismissAnyExistingMenu called
[22:28:13] [MENU] âšī¸ No menu with tag 9999 found
[22:28:13] [MENU] â
dismissAnyExistingMenu completed
[22:28:13] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:28:13] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:28:13] [SEARCH] contentOffset.y=9.0, topInset=0.0, pullDistance=-9.0
[22:28:13] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:28:13] [SEARCH] topRefresh.isRefreshing=false
[22:28:13] [SEARCH] â Pull distance -9.0 < threshold 80.0
[22:28:16] [TROUBLESHOOT] Troubleshoot button tapped!
[22:28:17] [UPLOAD_QUEUE] â
Cleared 3 stuck uploads from queue
[22:28:21] DOWNLOADIIING 1b1a78050ebe099b.jpg
[22:28:21] DOWNLOADIIING bae538c2a3076c11.heic
[22:28:21] DOWNLOADIIING ee42d57ffd8ab767.jpg
[22:28:21] DOWNLOADIIING 5cfd84d52271d308.heic
[22:28:21] DOWNLOADIIING 0f2dda66cccdeadf.heic
[22:28:21] DOWNLOADIIING 2a4c7380908d6595.jpg
[22:28:22] [MENU] đ dismissAnyExistingMenu called
[22:28:22] [MENU] âšī¸ No menu with tag 9999 found
[22:28:22] [MENU] â
dismissAnyExistingMenu completed
[22:28:22] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:28:22] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=false
[22:28:22] [SEARCH] đ First pull on Tab 0 - showing search bar instead of refresh
[22:28:22] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[22:28:22] [SEARCH] â
Setting isSearchBarVisible = true
[22:28:22] [SEARCH] chatSearchBar is nil? false
[22:28:22] [SEARCH] Applied theme: day
[22:28:22] [SEARCH] Adjusting table contentInset.top by +56.0
[22:28:22] [SEARCH] Table contentInset.top: 40.0 -> 96.0
[22:28:22] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=true
[22:28:22] [CHAT] top pull-to-refresh triggered on tab 0
[22:28:22] [CHANNEL_SWITCH] đĄ Fetching URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?viewer=1&session_id=ILUIWU&mark_read=0&viewer_id=EDAD55A1-003F-415D-AA60-672B34B504FE
[22:28:22] [SEARCH] Focusing search field
[22:28:22] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:28:22] [SEARCH] contentOffset.y=-227.66666666666666, topInset=156.0, pullDistance=71.66666666666666
[22:28:22] [SEARCH] threshold=80.0, isSearchBarVisible=true
[22:28:22] [SEARCH] topRefresh.isRefreshing=true
[22:28:22] [SEARCH] â Pull distance 71.66666666666666 < threshold 80.0
[22:28:23] [MENU] đ dismissAnyExistingMenu called
[22:28:23] [MENU] âšī¸ No menu with tag 9999 found
[22:28:23] [MENU] â
dismissAnyExistingMenu completed
[22:28:23] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=true, tab=0
[22:28:23] [SEARCH] đŊ Hiding search bar (user started scrolling)
[22:28:23] [SEARCH] hideSearchBar() called - animated=true, isSearchBarVisible=true
[22:28:23] [SEARCH] â
Setting isSearchBarVisible = false
[22:28:23] [SEARCH] Adjusting table contentInset.top by -56.0
[22:28:23] [PENDING_UPLOAD] Found pending message: id=-4, file=, uploadStatus=0
[22:28:23] [PENDING_UPLOAD] Found pending message: id=-9, file=c8f0aac386a60643.jpg, uploadStatus=2
[22:28:23] [PENDING_UPLOAD] Total pending upload messages: 2
[22:28:23] [PENDING_UPLOAD] Preserved 2 pending messages before server refresh
[22:28:23] [PENDING_UPLOAD] Reinserting 2 pending messages
[22:28:23] [PENDING_UPLOAD] â
Reinserted message -4
[22:28:23] [PENDING_UPLOAD] â
Reinserted message -9
[22:28:24] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:28:24] [SEARCH] contentOffset.y=-75.33333333333333, topInset=100.0, pullDistance=-24.66666666666667
[22:28:24] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:28:24] [SEARCH] topRefresh.isRefreshing=true
[22:28:24] [SEARCH] â Pull distance -24.66666666666667 < threshold 80.0
[22:28:24] DOWNLOADIIING t_66e5f4c7c82fef18.jpg
[22:28:24] DOWNLOADIIING t_97828ef5de49a612.jpg
[22:28:24] [CHANNEL_SWITCH] đ About to set loaded messages. Count=3215
[22:28:24] [CHANNEL_SWITCH] đ Setting allMessagesWithReadBy = 3215 msgs
[22:28:24] [READBY_LOADED] msg 4318: readBy.count=0, readBy=[], isMyMsg=true
[22:28:24] [READBY_LOADED] msg 4317: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:28:24] [READBY_LOADED] msg 4316: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:28:24] [READBY_LOADED] msg 4315: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:28:24] [READBY_LOADED] msg 4314: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:28:24] [PENDING_UPLOAD] â
Merged pending message id=-4, file=
[22:28:24] [PENDING_UPLOAD] âī¸ Skipped pending message id=-9 - already exists in server data
[22:28:24] [PENDING_UPLOAD] Final merged count: 3216 (server: 3215, kept pending: 1)
[22:28:24] [CHANNEL_SWITCH] đ chatRows.count = 3264
[22:28:24] ReloadData 15 (3216 messages loaded, 17 pending media)
[22:28:24] DOWNLOADIIING 1b1a78050ebe099b.jpg
[22:28:24] DOWNLOADIIING bae538c2a3076c11.heic
[22:28:24] DOWNLOADIIING ee42d57ffd8ab767.jpg
[22:28:24] DOWNLOADIIING 5cfd84d52271d308.heic
[22:28:24] DOWNLOADIIING 0f2dda66cccdeadf.heic
[22:28:24] DOWNLOADIIING 2a4c7380908d6595.jpg
[22:28:24] [PULL_REFRESH] Loaded 3216 messages (first page), displaying 3216 for tab 0, hasMore: true
[22:28:24] ReloadData 15 (pull-to-refresh completed)
[22:28:24] ReloadData 14 (all 17 media thumbnails loaded) - applying tab 0 filtering
[22:28:25] [LIFECYCLE] App resigning active - cleared crash flag
[22:28:25] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[22:28:25] [SECURITY] Saved background timestamp
[22:28:25] [LIFECYCLE] App entering background - cleared crash flag
[22:28:25] [CLIENT_SIG] Disconnecting
[22:28:25] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[22:28:25] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0
[22:28:25] [WS] Canceling WebSocket for query connection to iosILUIWU
[22:28:25] In cleanupPeer
[22:28:25] In cleanupPeer
[22:28:25] [LIFECYCLE] WebRTC audio disabled
[22:28:25] [LIFECYCLE] AVAudioSession deactivated
[22:28:25] [LIFECYCLE] All connections stopped
[22:28:25] [CLIENT_SIG] WebSocket closed with code 1001
[22:28:25] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[22:28:25] [SERVER] Stopped reconnect polling
[22:28:25] Will request stop of video 0
[22:28:25] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1001
[22:28:25] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[22:28:25] Will request stop of video 0
[22:28:25] [WS] Connection failed: The operation couldnât be completed. Socket is not connected
[22:28:25] [WS] Query connection failed - cleaning up all agent connections and views
[22:28:25] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/}
[22:28:25] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[22:28:25] [PIP] Removing 0 tracks from PiP for connection 0
[22:28:25] [PIP] â
All tracks removed for connection 0
[22:28:25] [CLEANUP] ========================================
[22:28:25] [CLEANUP] Cleaning up all agent connections and views
[22:28:25] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[22:28:25] [CLEANUP] Stopped and removed 0 video connections
[22:28:25] [CLEANUP] Removed 0 video views
[22:28:25] [CLEANUP] Removed 0 feed scroll views
[22:28:25] [CLEANUP] Removed 0 status labels
[22:28:25] [CLEANUP] Reset agent query state
[22:28:25] [CLEANUP] Updated page indicator
[22:28:25] [CLEANUP] Rebuilt video layout
[22:28:25] [CLEANUP] â
All agent connections and views cleaned up
[22:28:25] [CLEANUP] ========================================
[22:28:25] [SERVER] Skipping reconnect polling - app is in background
[22:28:25] [PIP] Removing 0 tracks from PiP for connection 0
[22:28:25] [PIP] â
All tracks removed for connection 0
[22:28:25] [WS] URLSession invalidated successfully
[22:28:25] [CLEANUP] ========================================
[22:28:25] [CLEANUP] Cleaning up all agent connections and views
[22:28:25] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[22:28:25] [CLEANUP] Stopped and removed 0 video connections
[22:28:25] [CLEANUP] Removed 0 video views
[22:28:25] [CLEANUP] Removed 0 feed scroll views
[22:28:25] [CLEANUP] Removed 0 status labels
[22:28:25] [CLEANUP] Reset agent query state
[22:28:25] [CLEANUP] Updated page indicator
[22:28:25] [CLEANUP] Rebuilt video layout
[22:28:25] [CLEANUP] â
All agent connections and views cleaned up
[22:28:25] [CLEANUP] ========================================
[22:28:25] [SERVER] Skipping reconnect polling - app is in background
[22:33:00] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[22:33:00] [CLIENT_SIG] Connecting to session ILUIWU as Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[22:33:00] [LIFECYCLE] App entering foreground - restoring connections
[22:33:00] [UPLOAD_RETRY] No pending uploads to retry
[22:33:00] [LIFECYCLE] Merged 383 reactions from local DB
[22:33:00] [LIFECYCLE] Near top with 3216 messages - trimming to 50
[22:33:00] [LIFECYCLE] WebRTC audio re-enabled
[22:33:00] [AUDIO] â
Chat mode - audio will be managed by WebRTCViewer (no microphone)
[22:33:00] [VIEWER] Reconnecting after background - querying agents
[22:33:00] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[22:33:00] [WS] Opening session at ws://crivello.dyndns.org:8081/
[22:33:00] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[22:33:00] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[22:33:00] [SECURITY] Timeout exceeded - requiring re-authentication
[22:33:00] [PUSH_DEBUG] đĸ App became ACTIVE - resetting badges and triggering pollEventsNow
[22:33:00] [PUSH] handlePollEventsNotification userInfo: [:]
[22:33:00] [PUSH] No message_id in userInfo
[22:33:00] [PUSH] No operation_type in userInfo
[22:33:00] [FAST_REFRESH] Evolution disabled - performing incremental sync
[22:33:00] [FAST_REFRESH] Already have 50 messages - skipping local DB load
[22:33:00] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[22:33:00] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[22:33:00] [INCREMENTAL_SYNC] đĄ Fetching messages since ID 4318
[22:33:00] [CLIENT_SIG] WebSocket opened
[22:33:00] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[22:33:00] HELLO â sent (cached token, role=query)
[22:33:00] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[22:33:00] [CLIENT_SIG] Connected! clientId=XT7wV0RO8NKVe13G
[22:33:00] [SIG] hello_ok received for query connection - ready to query agents
[22:33:00] [SIG] get_agents request sent for sessionId=ILUIWU
[22:33:00] [SIG] get_agents request sent for sessionId=iosILUIWU
[22:33:00] [SERVER] Stopped reconnect polling
[22:33:00] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[22:33:00] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[22:33:00] [SIG] agents_list received: []
[22:33:00] [SIG] agents_list received: []
[22:33:00] [INCREMENTAL_SYNC] â
No new messages
[22:33:00] [FAST_REFRESH] Incremental sync complete - 50 messages
[22:33:01] [COMBINED_FETCH] Loaded 3215 read receipts, 382 messages with reactions
[22:33:01] [FAST_REFRESH] Enriched 49 messages with readBy data
[22:33:03] [PIN_AUTH] Correct PIN
[22:33:03] [SECURITY] Restored real session: ILUIWU
[22:33:03] [SECURITY] Restored real session: ILUIWU
[22:33:03] [LOCK] â
PIN auth callback - setting isAuthenticated = true
[22:33:03] [FAKE MODE] Exiting fake mode, restoring real session
[22:33:03] [SECURITY] Restored real session: ILUIWU
[22:33:03] [SECURITY] Saved real session: ILUIWU
[22:33:03] [FAKE MODE] â
Restored real session: ILUIWU
[22:33:04] DOWNLOADIIING 1b1a78050ebe099b.jpg
[22:33:04] DOWNLOADIIING bae538c2a3076c11.heic
[22:33:04] DOWNLOADIIING ee42d57ffd8ab767.jpg
[22:33:04] DOWNLOADIIING 5cfd84d52271d308.heic
[22:33:04] DOWNLOADIIING 0f2dda66cccdeadf.heic
[22:33:04] DOWNLOADIIING 2a4c7380908d6595.jpg
[22:33:04] [MENU] đ dismissAnyExistingMenu called
[22:33:04] [MENU] âšī¸ No menu with tag 9999 found
[22:33:04] [MENU] â
dismissAnyExistingMenu completed
[22:33:04] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:33:04] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:33:04] [SEARCH] contentOffset.y=-101.0, topInset=40.0, pullDistance=61.0
[22:33:04] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:33:04] [SEARCH] topRefresh.isRefreshing=false
[22:33:04] [SEARCH] â Pull distance 61.0 < threshold 80.0
[22:33:04] [MENU] đ dismissAnyExistingMenu called
[22:33:04] [MENU] âšī¸ No menu with tag 9999 found
[22:33:04] [MENU] â
dismissAnyExistingMenu completed
[22:33:04] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:33:05] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=false
[22:33:05] [SEARCH] đ First pull on Tab 0 - showing search bar instead of refresh
[22:33:05] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[22:33:05] [SEARCH] â
Setting isSearchBarVisible = true
[22:33:05] [SEARCH] chatSearchBar is nil? false
[22:33:05] [SEARCH] Applied theme: day
[22:33:05] [SEARCH] Adjusting table contentInset.top by +56.0
[22:33:05] [SEARCH] Table contentInset.top: 40.0 -> 96.0
[22:33:05] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=true
[22:33:05] [CHAT] top pull-to-refresh triggered on tab 0
[22:33:05] [CHANNEL_SWITCH] đĄ Fetching URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?viewer=1&session_id=ILUIWU&mark_read=0&viewer_id=EDAD55A1-003F-415D-AA60-672B34B504FE
[22:33:05] [SEARCH] Focusing search field
[22:33:05] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:33:05] [SEARCH] contentOffset.y=-249.66666666666666, topInset=156.0, pullDistance=93.66666666666666
[22:33:05] [SEARCH] threshold=80.0, isSearchBarVisible=true
[22:33:05] [SEARCH] topRefresh.isRefreshing=true
[22:33:05] [SEARCH] â
Pull distance 93.66666666666666 >= threshold 80.0
[22:33:05] [SEARCH] âšī¸ Search bar already visible, allowing refresh
[22:33:06] [SEARCH] Found 1543 messages matching 'u' in local DB
[22:33:06] [PENDING_UPLOAD] Found pending message: id=-4, file=, uploadStatus=0
[22:33:06] [PENDING_UPLOAD] Found pending message: id=-9, file=c8f0aac386a60643.jpg, uploadStatus=2
[22:33:06] [PENDING_UPLOAD] Total pending upload messages: 2
[22:33:06] [PENDING_UPLOAD] Preserved 2 pending messages before server refresh
[22:33:06] [SEARCH] Found 1543 matches for 'u'
[22:33:06] [PENDING_UPLOAD] Reinserting 2 pending messages
[22:33:06] [SEARCH] Found 86 messages matching 'up' in local DB
[22:33:06] [PENDING_UPLOAD] â
Reinserted message -4
[22:33:06] [PENDING_UPLOAD] â
Reinserted message -9
[22:33:06] [SEARCH] Found 86 matches for 'up'
[22:33:06] [SEARCH] Found 6 messages matching 'upd' in local DB
[22:33:06] [SEARCH] Found 6 matches for 'upd'
[22:33:06] [SEARCH] Found 6 messages matching 'upda' in local DB
[22:33:06] [SEARCH] Found 6 matches for 'upda'
[22:33:06] DOWNLOADIIING t_66e5f4c7c82fef18.jpg
[22:33:06] DOWNLOADIIING t_97828ef5de49a612.jpg
[22:33:06] [CHANNEL_SWITCH] đ About to set loaded messages. Count=3215
[22:33:06] [CHANNEL_SWITCH] đ Setting allMessagesWithReadBy = 3215 msgs
[22:33:06] [READBY_LOADED] msg 4318: readBy.count=0, readBy=[], isMyMsg=true
[22:33:06] [READBY_LOADED] msg 4317: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:33:06] [READBY_LOADED] msg 4316: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:33:06] [READBY_LOADED] msg 4315: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:33:06] [READBY_LOADED] msg 4314: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:33:06] [PENDING_UPLOAD] â
Merged pending message id=-4, file=
[22:33:06] [PENDING_UPLOAD] âī¸ Skipped pending message id=-9 - already exists in server data
[22:33:06] [PENDING_UPLOAD] Final merged count: 3216 (server: 3215, kept pending: 1)
[22:33:06] [CHANNEL_SWITCH] đ chatRows.count = 3264
[22:33:06] ReloadData 15 (3216 messages loaded, 17 pending media)
[22:33:07] DOWNLOADIIING 1b1a78050ebe099b.jpg
[22:33:07] DOWNLOADIIING bae538c2a3076c11.heic
[22:33:07] DOWNLOADIIING ee42d57ffd8ab767.jpg
[22:33:07] DOWNLOADIIING 5cfd84d52271d308.heic
[22:33:07] DOWNLOADIIING 0f2dda66cccdeadf.heic
[22:33:07] DOWNLOADIIING 2a4c7380908d6595.jpg
[22:33:07] [PULL_REFRESH] Loaded 3216 messages (first page), displaying 3216 for tab 0, hasMore: true
[22:33:07] ReloadData 15 (pull-to-refresh completed)
[22:33:07] ReloadData 14 (all 17 media thumbnails loaded) - applying tab 0 filtering
[22:33:07] [SEARCH] Found 6 messages matching 'upd' in local DB
[22:33:07] [SEARCH] Found 6 matches for 'upd'
[22:33:07] [SEARCH] Found 86 messages matching 'up' in local DB
[22:33:07] [SEARCH] Found 86 matches for 'up'
[22:33:07] [SEARCH] Found 1543 messages matching 'u' in local DB
[22:33:07] [SEARCH] Found 1543 matches for 'u'
[22:33:10] [WS] WebSocket task completed with error - isQueryOnly=true: The request timed out.
[22:33:10] [WS] Query connection error - cleaning up all agent connections and views
[22:33:10] [CLEANUP] ========================================
[22:33:10] [CLEANUP] Cleaning up all agent connections and views
[22:33:10] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[22:33:10] [CLEANUP] Stopped and removed 0 video connections
[22:33:10] [CLEANUP] Removed 0 video views
[22:33:10] [CLEANUP] Removed 0 feed scroll views
[22:33:10] [CLEANUP] Removed 0 status labels
[22:33:10] [CLEANUP] Reset agent query state
[22:33:10] [CLEANUP] Updated page indicator
[22:33:10] [CLEANUP] Rebuilt video layout
[22:33:10] [CLEANUP] â
All agent connections and views cleaned up
[22:33:10] [CLEANUP] ========================================
[22:33:10] [SERVER] Starting reconnect polling (5s interval)
[22:33:14] [REPLY_DEBUG] đ¤ didTapSend - Sending message WITHOUT reply
[22:33:14] [ANIMATION] đŦ Animating 1 new bubbles - scrolling to top to show them
[22:33:14] [REPLY_DEBUG] â cancelReply called - clearing messageToReplyTo
[22:33:14] [REPLY_DEBUG] â ī¸ sendMessage HTTP BODY - No reply message captured
[22:33:15] [SERVER] Polling - attempting to reconnect...
[22:33:16] [CLIENT_SIG] Event received: type=0 messageId=4319
[22:33:16] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":4319,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2025-12-08 19:33:14"}
[22:33:16] [WS_EVENT] Received event: type=0, messageId=4319
[22:33:16] [CHAT] receive_message.php JSON: ["file_name": , "session_id": ILUIWU, "datesent_utc": 2025-12-08 19:33:14, "ok": 1, "message_id": 4319, "message_type": 0]
[22:33:16] [WS_EVENT] New message notification - refreshing
[22:33:16] [INCREMENTAL_SYNC] đĄ Fetching messages since ID 4319
[22:33:16] ReloadData 9
[22:33:16] [INCREMENTAL_SYNC] â
No new messages
[22:33:20] [SERVER] Polling - attempting to reconnect...
[22:33:25] [SERVER] Polling - attempting to reconnect...
[22:33:26] [VIDEO EDITOR] Video playback stopped (Send button)
[22:33:26] [VIDEO EDITOR] No edits made, using original video
[22:33:26] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[22:33:26] [GALLERY_DB] Raw datesent for msg 4309: '2025-12-08 19:02:10'
[22:33:26] [GALLERY_DB] Raw datesent for msg 4301: '2025-12-08 18:53:38'
[22:33:26] [GALLERY_DB] Raw datesent for msg 4253: '2025-12-08 11:59:28'
[22:33:26] [GALLERY_DB] â
Loaded 207 media messages
[22:33:26] [GALLERY] Filtered 207 -> 190 (only with local thumbnails)
[22:33:26] [GALLERY] First 5 after sort (newest first):
[22:33:26] [GALLERY] 0: id=4309, date=2025-12-08 19:02:10, file=7f5c64456effb085.png
[22:33:26] [GALLERY] 1: id=4301, date=2025-12-08 18:53:38, file=71742c3d78ed2063.jpg
[22:33:26] [GALLERY] 2: id=4253, date=2025-12-08 11:59:28, file=10dabda8d04dc725.jpg
[22:33:26] [GALLERY] 3: id=4227, date=2025-12-08 08:35:52, file=5abfa51ac84672ca.jpg
[22:33:26] [GALLERY] 4: id=4225, date=2025-12-08 06:51:17, file=a59f6ea5b913297d.jpg
[22:33:27] [VIDEO_DIRECT] ========== NEW DIRECT VIDEO UPLOAD ==========
[22:33:27] [VIDEO_DIRECT] Source URL: /private/var/mobile/Containers/Data/Application/64241746-612B-4D3F-BB76-5F6D5F47B8AD/tmp/2D44809D-598A-4C23-AFA8-264DB74839B9.mov
[22:33:27] [VIDEO_DIRECT] Source file exists: true
[22:33:27] [VIDEO_DIRECT] Random filename: 406a0daa85a0e2a9.mov
[22:33:27] [VIDEO_DIRECT] Local media path: /var/mobile/Containers/Data/Application/64241746-612B-4D3F-BB76-5F6D5F47B8AD/Documents/MediaCache/406a0daa85a0e2a9.mov
[22:33:27] [VIDEO_DIRECT] Local thumbnail path: /var/mobile/Containers/Data/Application/64241746-612B-4D3F-BB76-5F6D5F47B8AD/Documents/MediaCache/t_406a0daa85a0e2a9.jpg
[22:33:27] [VIDEO_DIRECT] Source file size: 1267972117 bytes (1209.23 MB)
[22:33:27] [VIDEO_DIRECT] đĻ Moving large file (>100MB)
[22:33:27] [VIDEO_DIRECT] â
File moved successfully
[22:33:27] [VIDEO_DIRECT] Destination file exists: true
[22:33:27] [VIDEO_DIRECT] Destination file size: 1267972117 bytes
[22:33:27] [VIDEO_DIRECT] đŧī¸ Creating thumbnail...
[22:33:27] [VIDEO_DIRECT] â
Thumbnail created in 0.06s
[22:33:27] [VIDEO_DIRECT] Thumbnail exists: true
[22:33:27] [VIDEO_DIRECT] Thumbnail file size: 7549 bytes
[22:33:27] [VIDEO_DIRECT] đ¤ Sending message to server...
[22:33:27] [VIDEO_DIRECT] Caption: ''
[22:33:27] [VIDEO_DIRECT] Timer: -2
[22:33:27] [VIDEO_DIRECT] Filename: 406a0daa85a0e2a9.mov
[22:33:27] [CELL_UPLOAD] configure: msgId=-2, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=1
[22:33:27] [CELL_UPLOAD] â no active progress, using msg.uploadStatus=1 â pending
[22:33:27] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:27] [CELL_UPLOAD] â pending: overlay.isHidden=false, alpha=0.699999988079071
[22:33:27] [ANIMATION] đŦ Animating 1 new bubbles - scrolling to top to show them
[22:33:27] [CELL_UPLOAD] configure: msgId=-2, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=1
[22:33:27] [CELL_UPLOAD] â no active progress, using msg.uploadStatus=1 â pending
[22:33:27] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:27] [CELL_UPLOAD] â pending: overlay.isHidden=false, alpha=0.699999988079071
[22:33:27] [REPLY_DEBUG] â cancelReply called - clearing messageToReplyTo
[22:33:27] [REPLY_DEBUG] â ī¸ sendMessage HTTP BODY - No reply message captured
[22:33:27] [VIDEO_DIRECT] â
sendMessage API call completed
[22:33:27] [VIDEO_DIRECT] đŧī¸ Starting THUMBNAIL upload: t_406a0daa85a0e2a9.jpg
[22:33:27] [UPLOAD_QUEUE] Enqueued upload id=546 for t_406a0daa85a0e2a9.jpg
[22:33:27] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[22:33:27] [UPLOAD_DEBUG] Item ID: 546
[22:33:27] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/64241746-612B-4D3F-BB76-5F6D5F47B8AD/Documents/MediaCache/t_406a0daa85a0e2a9.jpg
[22:33:27] [UPLOAD_DEBUG] Random filename: t_406a0daa85a0e2a9.jpg
[22:33:27] [UPLOAD_DEBUG] Session ID: ILUIWU
[22:33:27] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[22:33:27] [UPLOAD_DEBUG] Retry count: 0
[22:33:27] [UPLOAD_DEBUG] File exists: true
[22:33:27] [UPLOAD_DEBUG] File size: 7549 bytes (0.0 MB)
[22:33:27] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[22:33:27] [UPLOAD_DEBUG] â Using STANDARD upload (file <= threshold)
[22:33:27] [UPLOAD_DEBUG] --- startStandardUpload ---
[22:33:27] [UPLOAD_DEBUG] Upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_media.php
[22:33:27] [UPLOAD_DEBUG] File extension: jpg, MIME type: image/jpeg
[22:33:27] [UPLOAD_DEBUG] Temp file URL: /private/var/mobile/Containers/Data/Application/64241746-612B-4D3F-BB76-5F6D5F47B8AD/tmp/5D2418E6-7EC9-41D9-B53D-13F7B166FEC6.upload
[22:33:27] [UPLOAD_DEBUG] File size: 7549 bytes, in-memory threshold: 10485760 bytes
[22:33:27] [UPLOAD_DEBUG] Creating multipart body (in-memory mode)...
[22:33:27] [UPLOAD_DEBUG] â In-memory body written to temp file (8031 bytes)
[22:33:27] [UPLOAD_DEBUG] Creating background upload task...
[22:33:27] [UPLOAD_STATUS] Updated status=2 for file: t_406a0daa85a0e2a9.jpg
[22:33:27] [UPLOAD_DEBUG] Task created with identifier: 1
[22:33:27] [UPLOAD_DEBUG] Added to activeUploads dictionary
[22:33:27] [UPLOAD_DEBUG] Updated DB status to 'uploading'
[22:33:27] [UPLOAD_DEBUG] â Task resumed - upload should be in progress now
[22:33:27] [UPLOAD_DEBUG] ========== UPLOAD STARTED ==========
[22:33:27] [UPLOAD_PROGRESS] t_406a0daa85a0e2a9.jpg: 100% (0.0/0.0 MB) task=1
[22:33:27] [UPLOAD_STATUS] Updated status=2 for file: t_406a0daa85a0e2a9.jpg
[22:33:28] [UPLOAD_RESPONSE] Started receiving response for task 1
[22:33:28] [UPLOAD_METRICS] Task 1 metrics:
[22:33:28] [UPLOAD_METRICS] Total time: 0.69s
[22:33:28] [UPLOAD_METRICS] Upload time: 0.00s
[22:33:28] [UPLOAD_METRICS] Response time: 0.00s
[22:33:28] [UPLOAD_METRICS] Network protocol: http/1.1
[22:33:28] [UPLOAD_METRICS] Proxy: no
[22:33:28] [UPLOAD_METRICS] Reused connection: no
[22:33:28] [UPLOAD_COMPLETE] ========== Task Completed ==========
[22:33:28] [UPLOAD_COMPLETE] Task ID: 1
[22:33:28] [UPLOAD_COMPLETE] Task state: 3 (0=running, 1=suspended, 2=canceling, 3=completed)
[22:33:28] [UPLOAD_COMPLETE] Filename: t_406a0daa85a0e2a9.jpg
[22:33:28] [UPLOAD_COMPLETE] Local path: /var/mobile/Containers/Data/Application/64241746-612B-4D3F-BB76-5F6D5F47B8AD/Documents/MediaCache/t_406a0daa85a0e2a9.jpg
[22:33:28] [UPLOAD_COMPLETE] Retry count: 0
[22:33:28] [UPLOAD_COMPLETE] HTTP Status: 200
[22:33:28] [UPLOAD_COMPLETE] Response headers: [AnyHashable("Content-Type"): application/json, AnyHashable("Server"): Apache/2.4.65 (Debian), AnyHashable("Date"): Mon, 08 Dec 2025 19:33:27 GMT, AnyHashable("Content-Length"): 215, AnyHashable("Connection"): Keep-Alive, AnyHashable("Keep-Alive"): timeout=5, max=100]
[22:33:28] [UPLOAD_COMPLETE] Response body (215 bytes): {"ok":true,"file_name":"t_406a0daa85a0e2a9.jpg","orig_name":"t_406a0daa85a0e2a9.jpg","size":7549,"env":{"file_uploads":"1","upload_max_filesize":"5G","post_max_size":"10G","upload_tmp_dir":"","content_length":8031}}
[22:33:28] [UPLOAD_COMPLETE] â
Server confirmed upload OK
[22:33:28] [UPLOAD_COMPLETE] Server filename: t_406a0daa85a0e2a9.jpg
[22:33:28] [UPLOAD_VERIFY] Verifying file exists: t_406a0daa85a0e2a9.jpg
[22:33:28] [UPLOAD_VERIFY] â
File verified: t_406a0daa85a0e2a9.jpg (size: 7549)
[22:33:28] [UPLOAD_STATUS] Updated status=0 for file: t_406a0daa85a0e2a9.jpg
[22:33:28] [UPLOAD_QUEUE] Upload completed for id=546
[22:33:28] [VIDEO_DIRECT] â
Thumbnail uploaded in 1.06s
[22:33:28] [VIDEO_DIRECT] đ¤ Starting MAIN VIDEO upload: 406a0daa85a0e2a9.mov
[22:33:28] [UPLOAD_QUEUE] Enqueued upload id=547 for 406a0daa85a0e2a9.mov
[22:33:28] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[22:33:28] [UPLOAD_DEBUG] Item ID: 547
[22:33:28] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/64241746-612B-4D3F-BB76-5F6D5F47B8AD/Documents/MediaCache/406a0daa85a0e2a9.mov
[22:33:28] [UPLOAD_DEBUG] Random filename: 406a0daa85a0e2a9.mov
[22:33:28] [UPLOAD_DEBUG] Session ID: ILUIWU
[22:33:28] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[22:33:28] [UPLOAD_DEBUG] Retry count: 0
[22:33:28] [UPLOAD_DEBUG] File exists: true
[22:33:28] [UPLOAD_DEBUG] File size: 1267972117 bytes (1209.2 MB)
[22:33:28] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[22:33:28] [UPLOAD_DEBUG] â Using CHUNKED upload (file > threshold)
[22:33:28] [UPLOAD_DEBUG] --- startChunkedUpload ---
[22:33:28] [UPLOAD_DEBUG] Chunked upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_chunked.php
[22:33:28] [UPLOAD_DEBUG] File size: 1267972117 bytes (1209.2 MB)
[22:33:28] [UPLOAD_DEBUG] Chunk size: 104857600 bytes (100 MB)
[22:33:28] [UPLOAD_DEBUG] Total chunks: 13
[22:33:28] [UPLOAD_DEBUG] Updated DB status to 'uploading_chunked'
[22:33:28] [CHUNKED_RESUME] Checking resume: item.currentChunk=0, item.totalChunks=0, calculated totalChunks=13
[22:33:28] [UPLOAD_DEBUG] Starting chunk upload sequence from chunk 0...
[22:33:28] [UPLOAD_STATUS] Updated in-memory status=2 for file: 406a0daa85a0e2a9.mov
[22:33:28] [UPLOAD_STATUS] Updated status=2 for file: 406a0daa85a0e2a9.mov
[22:33:28] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:28] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:33:28] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:28] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:33:28] [CHUNKED_RESUME] Saved chunk info: totalChunks=13, fileSize=1267972117
[22:33:29] [CLIENT_SIG] Event received: type=0 messageId=4320
[22:33:29] [WS_EVENT] Received event: type=0, messageId=4320
[22:33:29] [WS_EVENT] New message notification - refreshing
[22:33:29] [INCREMENTAL_SYNC] đĄ Fetching messages since ID 4319
[22:33:29] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":4320,"session_id":"ILUIWU","message_type":1,"file_name":"406a0daa85a0e2a9.mov","datesent_utc":"2025-12-08 19:33:27"}
[22:33:29] [CHAT] receive_message.php JSON: ["datesent_utc": 2025-12-08 19:33:27, "session_id": ILUIWU, "file_name": 406a0daa85a0e2a9.mov, "ok": 1, "message_id": 4320, "message_type": 1]
[22:33:29] ReloadData 9
[22:33:29] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:29] [CELL_UPLOAD] configure: msgId=-2, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=1
[22:33:29] [CELL_UPLOAD] â has active progress=0.0, setting uploading
[22:33:29] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:29] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:33:29] [INCREMENTAL_SYNC] â
Found 1 new messages
[22:33:29] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:29] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=2
[22:33:29] [CELL_UPLOAD] â has active progress=0.0, setting uploading
[22:33:29] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:29] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:33:30] [SERVER] Polling - attempting to reconnect...
[22:33:35] [SERVER] Polling - attempting to reconnect...
[22:33:35] [REPLY_DEBUG] đ¤ didTapSend - Sending message WITHOUT reply
[22:33:35] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:35] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=2
[22:33:35] [CELL_UPLOAD] â has active progress=0.0, setting uploading
[22:33:35] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:35] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:33:35] [ANIMATION] đŦ Animating 1 new bubbles - scrolling to top to show them
[22:33:35] [REPLY_DEBUG] â cancelReply called - clearing messageToReplyTo
[22:33:35] [REPLY_DEBUG] â ī¸ sendMessage HTTP BODY - No reply message captured
[22:33:37] [MENU] đ dismissAnyExistingMenu called
[22:33:37] [MENU] âšī¸ No menu with tag 9999 found
[22:33:37] [MENU] â
dismissAnyExistingMenu completed
[22:33:37] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=true, tab=0
[22:33:37] [SEARCH] đŊ Hiding search bar (user started scrolling)
[22:33:37] [SEARCH] hideSearchBar() called - animated=true, isSearchBarVisible=true
[22:33:37] [SEARCH] â
Setting isSearchBarVisible = false
[22:33:37] [SEARCH] Adjusting table contentInset.top by -56.0
[22:33:37] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=false
[22:33:37] [SEARCH] đ First pull on Tab 0 - showing search bar instead of refresh
[22:33:37] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[22:33:37] [SEARCH] â
Setting isSearchBarVisible = true
[22:33:37] [SEARCH] chatSearchBar is nil? false
[22:33:37] [SEARCH] Applied theme: day
[22:33:37] [SEARCH] Adjusting table contentInset.top by +56.0
[22:33:37] [SEARCH] Table contentInset.top: 40.0 -> 96.0
[22:33:37] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=true
[22:33:37] [CHAT] top pull-to-refresh triggered on tab 0
[22:33:37] [CHANNEL_SWITCH] đĄ Fetching URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?viewer=1&session_id=ILUIWU&mark_read=0&viewer_id=EDAD55A1-003F-415D-AA60-672B34B504FE
[22:33:37] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:33:37] [SEARCH] contentOffset.y=-195.66666666666666, topInset=156.0, pullDistance=39.66666666666666
[22:33:37] [SEARCH] threshold=80.0, isSearchBarVisible=true
[22:33:37] [SEARCH] topRefresh.isRefreshing=true
[22:33:37] [SEARCH] â Pull distance 39.66666666666666 < threshold 80.0
[22:33:37] [SEARCH] Focusing search field
[22:33:38] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":4321,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2025-12-08 19:33:36"}
[22:33:38] [CLIENT_SIG] Event received: type=0 messageId=4321
[22:33:38] [CHAT] receive_message.php JSON: ["session_id": ILUIWU, "message_id": 4321, "ok": 1, "file_name": , "datesent_utc": 2025-12-08 19:33:36, "message_type": 0]
[22:33:38] [WS_EVENT] Received event: type=0, messageId=4321
[22:33:38] [WS_EVENT] New message notification - refreshing
[22:33:38] ReloadData 9
[22:33:38] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:38] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=2
[22:33:38] [CELL_UPLOAD] â has active progress=0.0, setting uploading
[22:33:38] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:38] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:33:39] [PENDING_UPLOAD] Found pending message: id=-4, file=, uploadStatus=0
[22:33:39] [PENDING_UPLOAD] Found pending message: id=-9, file=c8f0aac386a60643.jpg, uploadStatus=2
[22:33:39] [PENDING_UPLOAD] Total pending upload messages: 2
[22:33:39] [PENDING_UPLOAD] Preserved 2 pending messages before server refresh
[22:33:39] [PENDING_UPLOAD] Reinserting 2 pending messages
[22:33:39] [PENDING_UPLOAD] â
Reinserted message -4
[22:33:39] [PENDING_UPLOAD] â
Reinserted message -9
[22:33:39] DOWNLOADIIING t_66e5f4c7c82fef18.jpg
[22:33:39] DOWNLOADIIING t_97828ef5de49a612.jpg
[22:33:39] [CHANNEL_SWITCH] đ About to set loaded messages. Count=3218
[22:33:39] [CHANNEL_SWITCH] đ Setting allMessagesWithReadBy = 3218 msgs
[22:33:39] [READBY_LOADED] msg 4321: readBy.count=0, readBy=[], isMyMsg=true
[22:33:39] [READBY_LOADED] msg 4320: readBy.count=0, readBy=[], isMyMsg=true
[22:33:39] [READBY_LOADED] msg 4319: readBy.count=0, readBy=[], isMyMsg=true
[22:33:39] [READBY_LOADED] msg 4318: readBy.count=0, readBy=[], isMyMsg=true
[22:33:39] [READBY_LOADED] msg 4317: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:33:39] [PENDING_UPLOAD] â
Merged pending message id=-4, file=
[22:33:39] [PENDING_UPLOAD] âī¸ Skipped pending message id=-9 - already exists in server data
[22:33:39] [PENDING_UPLOAD] Final merged count: 3219 (server: 3218, kept pending: 1)
[22:33:39] [CHANNEL_SWITCH] đ chatRows.count = 3267
[22:33:39] ReloadData 15 (3219 messages loaded, 17 pending media)
[22:33:40] DOWNLOADIIING 1b1a78050ebe099b.jpg
[22:33:40] DOWNLOADIIING bae538c2a3076c11.heic
[22:33:40] DOWNLOADIIING ee42d57ffd8ab767.jpg
[22:33:40] DOWNLOADIIING 5cfd84d52271d308.heic
[22:33:40] DOWNLOADIIING 0f2dda66cccdeadf.heic
[22:33:40] DOWNLOADIIING 2a4c7380908d6595.jpg
[22:33:40] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:40] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:33:40] [CELL_UPLOAD] â has active progress=0.0, setting uploading
[22:33:40] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:40] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:33:40] [PULL_REFRESH] Loaded 3219 messages (first page), displaying 3219 for tab 0, hasMore: true
[22:33:40] ReloadData 15 (pull-to-refresh completed)
[22:33:40] [LIFECYCLE] App resigning active - cleared crash flag
[22:33:40] [SERVER] Polling - attempting to reconnect...
[22:33:40] ReloadData 14 (all 17 media thumbnails loaded) - applying tab 0 filtering
[22:33:41] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:41] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:33:41] [CELL_UPLOAD] â has active progress=0.0, setting uploading
[22:33:41] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:41] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:33:41] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:41] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:33:41] [CELL_UPLOAD] â has active progress=0.0, setting uploading
[22:33:41] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:41] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:33:41] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:41] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:33:41] [CELL_UPLOAD] â has active progress=0.0, setting uploading
[22:33:41] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:41] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:33:42] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[22:33:42] [SECURITY] Saved background timestamp
[22:33:42] [LIFECYCLE] App entering background - cleared crash flag
[22:33:42] [CLIENT_SIG] Disconnecting
[22:33:42] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[22:33:42] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=3
[22:33:42] [WS] Canceling WebSocket for query connection to iosILUIWU
[22:33:42] In cleanupPeer
[22:33:42] In cleanupPeer
[22:33:42] [LIFECYCLE] WebRTC audio disabled
[22:33:42] [LIFECYCLE] AVAudioSession deactivated
[22:33:42] [LIFECYCLE] All connections stopped
[22:33:43] [CLIENT_SIG] WebSocket closed with code 1001
[22:33:43] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[22:33:43] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/}
[22:33:43] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[22:33:43] [SERVER] Stopped reconnect polling
[22:33:43] [WS] URLSession invalidated successfully
[22:33:43] Will request stop of video 0
[22:33:43] Will request stop of video 0
[22:33:43] [PIP] Removing 0 tracks from PiP for connection 0
[22:33:43] [PIP] â
All tracks removed for connection 0
[22:33:43] [PIP] Removing 0 tracks from PiP for connection 0
[22:33:43] [PIP] â
All tracks removed for connection 0
[22:33:59] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[22:33:59] [CLIENT_SIG] Connecting to session ILUIWU as Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[22:33:59] [LIFECYCLE] App entering foreground - restoring connections
[22:33:59] [UPLOAD_RETRY] No pending uploads to retry
[22:33:59] [LIFECYCLE] Merged 383 reactions from local DB
[22:33:59] [UPLOAD_QUEUE] Scheduling retry #1 for id=547 in 4.0s
[22:33:59] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:59] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:33:59] [CELL_UPLOAD] â has active progress=0.0, setting uploading
[22:33:59] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:59] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:33:59] [LIFECYCLE] WebRTC audio re-enabled
[22:33:59] [AUDIO] â
Chat mode - audio will be managed by WebRTCViewer (no microphone)
[22:33:59] [VIEWER] Reconnecting after background - querying agents
[22:33:59] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[22:33:59] [CLIENT_SIG] WebSocket opened
[22:33:59] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[22:33:59] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[22:33:59] [SECURITY] Timeout exceeded - requiring re-authentication
[22:33:59] [PUSH_DEBUG] đĸ App became ACTIVE - resetting badges and triggering pollEventsNow
[22:33:59] [PUSH] handlePollEventsNotification userInfo: [:]
[22:33:59] [PUSH] No message_id in userInfo
[22:33:59] [PUSH] No operation_type in userInfo
[22:33:59] [FAST_REFRESH] Evolution disabled - performing incremental sync
[22:33:59] [FAST_REFRESH] Already have 50 messages - skipping local DB load
[22:33:59] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[22:33:59] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:59] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:33:59] [CELL_UPLOAD] â has active progress=0.0, setting uploading
[22:33:59] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:33:59] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:33:59] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[22:33:59] [INCREMENTAL_SYNC] đĄ Fetching messages since ID 4321
[22:33:59] [CLIENT_SIG] Connected! clientId=JiIc7BhIF-M8CVXG
[22:33:59] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[22:33:59] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[22:33:59] [INCREMENTAL_SYNC] â
No new messages
[22:33:59] [FAST_REFRESH] Incremental sync complete - 50 messages
[22:34:00] [COMBINED_FETCH] Loaded 3218 read receipts, 382 messages with reactions
[22:34:00] [FAST_REFRESH] Enriched 49 messages with readBy data
[22:34:00] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:00] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:34:00] [CELL_UPLOAD] â has active progress=0.0, setting uploading
[22:34:00] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:00] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:01] [PIN_AUTH] Correct PIN
[22:34:01] [SECURITY] Restored real session: ILUIWU
[22:34:01] [SECURITY] Restored real session: ILUIWU
[22:34:01] [LOCK] â
PIN auth callback - setting isAuthenticated = true
[22:34:01] [FAKE MODE] Exiting fake mode, restoring real session
[22:34:01] [SECURITY] Restored real session: ILUIWU
[22:34:01] [SECURITY] Saved real session: ILUIWU
[22:34:01] [FAKE MODE] â
Restored real session: ILUIWU
[22:34:02] DOWNLOADIIING 1b1a78050ebe099b.jpg
[22:34:02] DOWNLOADIIING bae538c2a3076c11.heic
[22:34:02] DOWNLOADIIING ee42d57ffd8ab767.jpg
[22:34:02] DOWNLOADIIING 5cfd84d52271d308.heic
[22:34:02] DOWNLOADIIING 0f2dda66cccdeadf.heic
[22:34:02] DOWNLOADIIING 2a4c7380908d6595.jpg
[22:34:02] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:02] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:34:02] [CELL_UPLOAD] â has active progress=0.0, setting uploading
[22:34:02] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:02] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:02] [MENU] đ dismissAnyExistingMenu called
[22:34:02] [MENU] âšī¸ No menu with tag 9999 found
[22:34:02] [MENU] â
dismissAnyExistingMenu completed
[22:34:02] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=true, tab=0
[22:34:02] [SEARCH] đŊ Hiding search bar (user started scrolling)
[22:34:02] [SEARCH] hideSearchBar() called - animated=true, isSearchBarVisible=true
[22:34:02] [SEARCH] â
Setting isSearchBarVisible = false
[22:34:02] [SEARCH] Adjusting table contentInset.top by -56.0
[22:34:02] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:02] [SEARCH] contentOffset.y=-158.33333333333334, topInset=40.0, pullDistance=118.33333333333334
[22:34:02] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:02] [SEARCH] topRefresh.isRefreshing=false
[22:34:02] [SEARCH] â
Pull distance 118.33333333333334 >= threshold 80.0
[22:34:02] [SEARCH] đ Showing search bar (first pull)
[22:34:02] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[22:34:02] [SEARCH] â
Setting isSearchBarVisible = true
[22:34:02] [SEARCH] chatSearchBar is nil? false
[22:34:02] [SEARCH] Applied theme: day
[22:34:02] [SEARCH] Adjusting table contentInset.top by +56.0
[22:34:02] [SEARCH] Table contentInset.top: 40.0 -> 96.0
[22:34:02] [SEARCH] Focusing search field
[22:34:03] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[22:34:03] [UPLOAD_DEBUG] Item ID: 547
[22:34:03] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/64241746-612B-4D3F-BB76-5F6D5F47B8AD/Documents/MediaCache/406a0daa85a0e2a9.mov
[22:34:03] [UPLOAD_DEBUG] Random filename: 406a0daa85a0e2a9.mov
[22:34:03] [UPLOAD_DEBUG] Session ID: ILUIWU
[22:34:03] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[22:34:03] [UPLOAD_DEBUG] Retry count: 1
[22:34:03] [UPLOAD_STATUS] Updated in-memory status=2 for file: 406a0daa85a0e2a9.mov
[22:34:03] [UPLOAD_DEBUG] File exists: true
[22:34:03] [UPLOAD_DEBUG] File size: 1267972117 bytes (1209.2 MB)
[22:34:03] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[22:34:03] [UPLOAD_DEBUG] â Using CHUNKED upload (file > threshold)
[22:34:03] [UPLOAD_DEBUG] --- startChunkedUpload ---
[22:34:03] [UPLOAD_DEBUG] Chunked upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_chunked.php
[22:34:03] [UPLOAD_DEBUG] File size: 1267972117 bytes (1209.2 MB)
[22:34:03] [UPLOAD_DEBUG] Chunk size: 104857600 bytes (100 MB)
[22:34:03] [UPLOAD_DEBUG] Total chunks: 13
[22:34:03] [UPLOAD_DEBUG] Updated DB status to 'uploading_chunked'
[22:34:03] [CHUNKED_RESUME] Checking resume: item.currentChunk=0, item.totalChunks=13, calculated totalChunks=13
[22:34:03] [UPLOAD_DEBUG] Starting chunk upload sequence from chunk 0...
[22:34:03] [CHUNKED_RESUME] Saved chunk info: totalChunks=13, fileSize=1267972117
[22:34:03] [UPLOAD_STATUS] Updated status=2 for file: 406a0daa85a0e2a9.mov
[22:34:03] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:03] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:03] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:03] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:03] [MENU] đ dismissAnyExistingMenu called
[22:34:03] [MENU] âšī¸ No menu with tag 9999 found
[22:34:03] [MENU] â
dismissAnyExistingMenu completed
[22:34:03] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=true, tab=0
[22:34:03] [SEARCH] đŊ Hiding search bar (user started scrolling)
[22:34:03] [SEARCH] hideSearchBar() called - animated=true, isSearchBarVisible=true
[22:34:03] [SEARCH] â
Setting isSearchBarVisible = false
[22:34:03] [SEARCH] Adjusting table contentInset.top by -56.0
[22:34:03] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=false
[22:34:03] [SEARCH] đ First pull on Tab 0 - showing search bar instead of refresh
[22:34:03] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[22:34:03] [SEARCH] â
Setting isSearchBarVisible = true
[22:34:03] [SEARCH] chatSearchBar is nil? false
[22:34:03] [SEARCH] Applied theme: day
[22:34:03] [SEARCH] Adjusting table contentInset.top by +56.0
[22:34:03] [SEARCH] Table contentInset.top: 40.0 -> 96.0
[22:34:03] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=true
[22:34:03] [CHAT] top pull-to-refresh triggered on tab 0
[22:34:03] [CHANNEL_SWITCH] đĄ Fetching URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?viewer=1&session_id=ILUIWU&mark_read=0&viewer_id=EDAD55A1-003F-415D-AA60-672B34B504FE
[22:34:03] [SEARCH] Focusing search field
[22:34:03] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:03] [SEARCH] contentOffset.y=-267.6666666666667, topInset=156.0, pullDistance=111.66666666666669
[22:34:03] [SEARCH] threshold=80.0, isSearchBarVisible=true
[22:34:03] [SEARCH] topRefresh.isRefreshing=true
[22:34:03] [SEARCH] â
Pull distance 111.66666666666669 >= threshold 80.0
[22:34:03] [SEARCH] âšī¸ Search bar already visible, allowing refresh
[22:34:05] [MENU] đ dismissAnyExistingMenu called
[22:34:05] [MENU] âšī¸ No menu with tag 9999 found
[22:34:05] [MENU] â
dismissAnyExistingMenu completed
[22:34:05] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=true, tab=0
[22:34:05] [SEARCH] đŊ Hiding search bar (user started scrolling)
[22:34:05] [SEARCH] hideSearchBar() called - animated=true, isSearchBarVisible=true
[22:34:05] [SEARCH] â
Setting isSearchBarVisible = false
[22:34:05] [SEARCH] Adjusting table contentInset.top by -56.0
[22:34:05] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:05] [SEARCH] contentOffset.y=-92.33333333333333, topInset=100.0, pullDistance=-7.666666666666671
[22:34:05] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:05] [SEARCH] topRefresh.isRefreshing=true
[22:34:05] [SEARCH] â Pull distance -7.666666666666671 < threshold 80.0
[22:34:05] [MENU] đ dismissAnyExistingMenu called
[22:34:05] [MENU] âšī¸ No menu with tag 9999 found
[22:34:05] [MENU] â
dismissAnyExistingMenu completed
[22:34:05] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:05] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:05] [SEARCH] contentOffset.y=54.666666666666664, topInset=100.0, pullDistance=-154.66666666666666
[22:34:05] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:05] [SEARCH] topRefresh.isRefreshing=true
[22:34:05] [SEARCH] â Pull distance -154.66666666666666 < threshold 80.0
[22:34:06] [PENDING_UPLOAD] Found pending message: id=4320, file=406a0daa85a0e2a9.mov, uploadStatus=2
[22:34:06] [PENDING_UPLOAD] Found pending message: id=-4, file=, uploadStatus=0
[22:34:06] [PENDING_UPLOAD] Found pending message: id=-9, file=c8f0aac386a60643.jpg, uploadStatus=2
[22:34:06] [PENDING_UPLOAD] Total pending upload messages: 3
[22:34:06] [PENDING_UPLOAD] Preserved 3 pending messages before server refresh
[22:34:06] [PENDING_UPLOAD] Reinserting 3 pending messages
[22:34:06] [PENDING_UPLOAD] â
Reinserted message 4320
[22:34:06] [PENDING_UPLOAD] â
Reinserted message -4
[22:34:06] [PENDING_UPLOAD] â
Reinserted message -9
[22:34:06] [MENU] đ dismissAnyExistingMenu called
[22:34:06] [MENU] âšī¸ No menu with tag 9999 found
[22:34:06] [MENU] â
dismissAnyExistingMenu completed
[22:34:06] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:06] DOWNLOADIIING t_66e5f4c7c82fef18.jpg
[22:34:06] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:06] [SEARCH] contentOffset.y=149.0, topInset=100.0, pullDistance=-249.0
[22:34:06] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:06] [SEARCH] topRefresh.isRefreshing=true
[22:34:06] [SEARCH] â Pull distance -249.0 < threshold 80.0
[22:34:06] DOWNLOADIIING t_97828ef5de49a612.jpg
[22:34:06] [CHANNEL_SWITCH] đ About to set loaded messages. Count=3218
[22:34:06] [CHANNEL_SWITCH] đ Setting allMessagesWithReadBy = 3218 msgs
[22:34:06] [READBY_LOADED] msg 4321: readBy.count=0, readBy=[], isMyMsg=true
[22:34:06] [READBY_LOADED] msg 4320: readBy.count=0, readBy=[], isMyMsg=true
[22:34:06] [READBY_LOADED] msg 4319: readBy.count=0, readBy=[], isMyMsg=true
[22:34:06] [READBY_LOADED] msg 4318: readBy.count=0, readBy=[], isMyMsg=true
[22:34:06] [READBY_LOADED] msg 4317: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:34:06] [PENDING_UPLOAD] âī¸ Skipped pending message id=4320 - already exists in server data
[22:34:06] [PENDING_UPLOAD] â
Merged pending message id=-4, file=
[22:34:06] [PENDING_UPLOAD] âī¸ Skipped pending message id=-9 - already exists in server data
[22:34:06] [PENDING_UPLOAD] Final merged count: 3219 (server: 3218, kept pending: 1)
[22:34:06] [CHANNEL_SWITCH] đ chatRows.count = 3267
[22:34:06] ReloadData 15 (3219 messages loaded, 17 pending media)
[22:34:07] DOWNLOADIIING 1b1a78050ebe099b.jpg
[22:34:07] DOWNLOADIIING bae538c2a3076c11.heic
[22:34:07] DOWNLOADIIING ee42d57ffd8ab767.jpg
[22:34:07] DOWNLOADIIING 5cfd84d52271d308.heic
[22:34:07] DOWNLOADIIING 0f2dda66cccdeadf.heic
[22:34:07] DOWNLOADIIING 2a4c7380908d6595.jpg
[22:34:07] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:07] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:34:07] [CELL_UPLOAD] â has active progress=0.0, setting uploading
[22:34:07] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:07] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:07] [PULL_REFRESH] Loaded 3219 messages (first page), displaying 3219 for tab 0, hasMore: true
[22:34:07] ReloadData 15 (pull-to-refresh completed)
[22:34:07] [MENU] đ dismissAnyExistingMenu called
[22:34:07] [MENU] âšī¸ No menu with tag 9999 found
[22:34:07] [MENU] â
dismissAnyExistingMenu completed
[22:34:07] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:07] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:07] [SEARCH] contentOffset.y=197.0, topInset=40.0, pullDistance=-237.0
[22:34:07] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:07] [SEARCH] topRefresh.isRefreshing=false
[22:34:07] [SEARCH] â Pull distance -237.0 < threshold 80.0
[22:34:07] ReloadData 14 (all 17 media thumbnails loaded) - applying tab 0 filtering
[22:34:08] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:08] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:34:08] [CELL_UPLOAD] â has active progress=0.0, setting uploading
[22:34:08] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:08] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:09] [MENU] đ dismissAnyExistingMenu called
[22:34:09] [MENU] âšī¸ No menu with tag 9999 found
[22:34:09] [MENU] â
dismissAnyExistingMenu completed
[22:34:09] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:09] [SCROLL_BTN] Showing button - scrolled 382pt > half 379pt
[22:34:09] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:09] [SEARCH] contentOffset.y=358.0, topInset=40.0, pullDistance=-398.0
[22:34:09] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:09] [SEARCH] topRefresh.isRefreshing=false
[22:34:09] [SEARCH] â Pull distance -398.0 < threshold 80.0
[22:34:09] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:09] [CELL_UPLOAD] configure: msgId=4309, file=7f5c64456effb085.png, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:34:09] [CELL_UPLOAD] â no active progress, using msg.uploadStatus=0 â complete
[22:34:09] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=7f5c64456effb085.png, overlayExists=true
[22:34:09] [MENU] đ dismissAnyExistingMenu called
[22:34:09] [MENU] âšī¸ No menu with tag 9999 found
[22:34:09] [MENU] â
dismissAnyExistingMenu completed
[22:34:09] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:10] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:10] [SEARCH] contentOffset.y=509.0, topInset=40.0, pullDistance=-549.0
[22:34:10] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:10] [SEARCH] topRefresh.isRefreshing=false
[22:34:10] [SEARCH] â Pull distance -549.0 < threshold 80.0
[22:34:11] [MENU] đ dismissAnyExistingMenu called
[22:34:11] [MENU] âšī¸ No menu with tag 9999 found
[22:34:11] [MENU] â
dismissAnyExistingMenu completed
[22:34:11] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:11] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:11] [SEARCH] contentOffset.y=607.0, topInset=40.0, pullDistance=-647.0
[22:34:11] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:11] [SEARCH] topRefresh.isRefreshing=false
[22:34:11] [SEARCH] â Pull distance -647.0 < threshold 80.0
[22:34:11] [MENU] đ dismissAnyExistingMenu called
[22:34:11] [MENU] âšī¸ No menu with tag 9999 found
[22:34:11] [MENU] â
dismissAnyExistingMenu completed
[22:34:11] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:11] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:11] [SEARCH] contentOffset.y=731.0, topInset=40.0, pullDistance=-771.0
[22:34:11] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:11] [SEARCH] topRefresh.isRefreshing=false
[22:34:11] [SEARCH] â Pull distance -771.0 < threshold 80.0
[22:34:15] [MENU] đ dismissAnyExistingMenu called
[22:34:15] [MENU] âšī¸ No menu with tag 9999 found
[22:34:15] [MENU] â
dismissAnyExistingMenu completed
[22:34:15] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:15] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:15] [SEARCH] contentOffset.y=790.3333333333334, topInset=40.0, pullDistance=-830.3333333333334
[22:34:15] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:15] [SEARCH] topRefresh.isRefreshing=false
[22:34:15] [SEARCH] â Pull distance -830.3333333333334 < threshold 80.0
[22:34:16] [MENU] đ dismissAnyExistingMenu called
[22:34:16] [MENU] âšī¸ No menu with tag 9999 found
[22:34:16] [MENU] â
dismissAnyExistingMenu completed
[22:34:16] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:16] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:16] [SEARCH] contentOffset.y=847.6666666666666, topInset=40.0, pullDistance=-887.6666666666666
[22:34:16] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:16] [SEARCH] topRefresh.isRefreshing=false
[22:34:16] [SEARCH] â Pull distance -887.6666666666666 < threshold 80.0
[22:34:17] [MENU] đ dismissAnyExistingMenu called
[22:34:17] [MENU] âšī¸ No menu with tag 9999 found
[22:34:17] [MENU] â
dismissAnyExistingMenu completed
[22:34:17] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:17] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:17] [SEARCH] contentOffset.y=809.0, topInset=40.0, pullDistance=-849.0
[22:34:17] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:17] [SEARCH] topRefresh.isRefreshing=false
[22:34:17] [SEARCH] â Pull distance -849.0 < threshold 80.0
[22:34:18] [MENU] đ dismissAnyExistingMenu called
[22:34:18] [MENU] âšī¸ No menu with tag 9999 found
[22:34:18] [MENU] â
dismissAnyExistingMenu completed
[22:34:18] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:18] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:18] [SEARCH] contentOffset.y=853.0, topInset=40.0, pullDistance=-893.0
[22:34:18] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:18] [SEARCH] topRefresh.isRefreshing=false
[22:34:18] [SEARCH] â Pull distance -893.0 < threshold 80.0
[22:34:19] [MENU] đ dismissAnyExistingMenu called
[22:34:19] [MENU] âšī¸ No menu with tag 9999 found
[22:34:19] [MENU] â
dismissAnyExistingMenu completed
[22:34:19] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:19] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:19] [SEARCH] contentOffset.y=810.3333333333334, topInset=40.0, pullDistance=-850.3333333333334
[22:34:19] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:19] [SEARCH] topRefresh.isRefreshing=false
[22:34:19] [SEARCH] â Pull distance -850.3333333333334 < threshold 80.0
[22:34:19] [MENU] đ dismissAnyExistingMenu called
[22:34:19] [MENU] âšī¸ No menu with tag 9999 found
[22:34:19] [MENU] â
dismissAnyExistingMenu completed
[22:34:19] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:19] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:19] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:34:19] [CELL_UPLOAD] â has active progress=0.0, setting uploading
[22:34:19] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:19] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:19] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:19] [SEARCH] contentOffset.y=465.3333333333333, topInset=40.0, pullDistance=-505.3333333333333
[22:34:19] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:19] [SEARCH] topRefresh.isRefreshing=false
[22:34:19] [SEARCH] â Pull distance -505.3333333333333 < threshold 80.0
[22:34:20] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:20] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:34:20] [CELL_UPLOAD] â has active progress=0.0, setting uploading
[22:34:20] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:20] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:20] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:20] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:34:20] [CELL_UPLOAD] â has active progress=0.0, setting uploading
[22:34:20] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:20] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:21] [MENU] đ dismissAnyExistingMenu called
[22:34:21] [MENU] âšī¸ No menu with tag 9999 found
[22:34:21] [MENU] â
dismissAnyExistingMenu completed
[22:34:21] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:21] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=false
[22:34:21] [SEARCH] đ First pull on Tab 0 - showing search bar instead of refresh
[22:34:21] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[22:34:21] [SEARCH] â
Setting isSearchBarVisible = true
[22:34:21] [SEARCH] chatSearchBar is nil? false
[22:34:21] [SEARCH] Applied theme: day
[22:34:21] [SEARCH] Adjusting table contentInset.top by +56.0
[22:34:21] [SEARCH] Table contentInset.top: 40.0 -> 96.0
[22:34:21] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=true
[22:34:21] [CHAT] top pull-to-refresh triggered on tab 0
[22:34:21] [CHANNEL_SWITCH] đĄ Fetching URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?viewer=1&session_id=ILUIWU&mark_read=0&viewer_id=EDAD55A1-003F-415D-AA60-672B34B504FE
[22:34:21] [SEARCH] Focusing search field
[22:34:21] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:21] [SEARCH] contentOffset.y=-228.0, topInset=156.0, pullDistance=72.0
[22:34:21] [SEARCH] threshold=80.0, isSearchBarVisible=true
[22:34:21] [SEARCH] topRefresh.isRefreshing=true
[22:34:21] [SEARCH] â Pull distance 72.0 < threshold 80.0
[22:34:22] [MENU] đ dismissAnyExistingMenu called
[22:34:22] [MENU] âšī¸ No menu with tag 9999 found
[22:34:22] [MENU] â
dismissAnyExistingMenu completed
[22:34:22] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=true, tab=0
[22:34:22] [SEARCH] đŊ Hiding search bar (user started scrolling)
[22:34:22] [SEARCH] hideSearchBar() called - animated=true, isSearchBarVisible=true
[22:34:22] [SEARCH] â
Setting isSearchBarVisible = false
[22:34:22] [SEARCH] Adjusting table contentInset.top by -56.0
[22:34:22] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:22] [SEARCH] contentOffset.y=-97.33333333333333, topInset=100.0, pullDistance=-2.6666666666666714
[22:34:22] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:22] [SEARCH] topRefresh.isRefreshing=true
[22:34:22] [SEARCH] â Pull distance -2.6666666666666714 < threshold 80.0
[22:34:22] [PENDING_UPLOAD] Found pending message: id=4320, file=406a0daa85a0e2a9.mov, uploadStatus=2
[22:34:22] [PENDING_UPLOAD] Found pending message: id=-4, file=, uploadStatus=0
[22:34:22] [PENDING_UPLOAD] Found pending message: id=-9, file=c8f0aac386a60643.jpg, uploadStatus=2
[22:34:22] [PENDING_UPLOAD] Total pending upload messages: 3
[22:34:22] [PENDING_UPLOAD] Preserved 3 pending messages before server refresh
[22:34:22] [MENU] đ dismissAnyExistingMenu called
[22:34:22] [MENU] âšī¸ No menu with tag 9999 found
[22:34:22] [MENU] â
dismissAnyExistingMenu completed
[22:34:22] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:22] [PENDING_UPLOAD] Reinserting 3 pending messages
[22:34:22] [PENDING_UPLOAD] â
Reinserted message 4320
[22:34:22] [PENDING_UPLOAD] â
Reinserted message -4
[22:34:22] [PENDING_UPLOAD] â
Reinserted message -9
[22:34:23] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:23] [SEARCH] contentOffset.y=22.0, topInset=100.0, pullDistance=-122.0
[22:34:23] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:23] [SEARCH] topRefresh.isRefreshing=true
[22:34:23] [SEARCH] â Pull distance -122.0 < threshold 80.0
[22:34:23] DOWNLOADIIING t_66e5f4c7c82fef18.jpg
[22:34:23] DOWNLOADIIING t_97828ef5de49a612.jpg
[22:34:23] [CHANNEL_SWITCH] đ About to set loaded messages. Count=3218
[22:34:23] [CHANNEL_SWITCH] đ Setting allMessagesWithReadBy = 3218 msgs
[22:34:23] [READBY_LOADED] msg 4321: readBy.count=0, readBy=[], isMyMsg=true
[22:34:23] [READBY_LOADED] msg 4320: readBy.count=0, readBy=[], isMyMsg=true
[22:34:23] [READBY_LOADED] msg 4319: readBy.count=0, readBy=[], isMyMsg=true
[22:34:23] [READBY_LOADED] msg 4318: readBy.count=0, readBy=[], isMyMsg=true
[22:34:23] [READBY_LOADED] msg 4317: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:34:23] [PENDING_UPLOAD] âī¸ Skipped pending message id=4320 - already exists in server data
[22:34:23] [PENDING_UPLOAD] â
Merged pending message id=-4, file=
[22:34:23] [PENDING_UPLOAD] âī¸ Skipped pending message id=-9 - already exists in server data
[22:34:23] [PENDING_UPLOAD] Final merged count: 3219 (server: 3218, kept pending: 1)
[22:34:23] [CHANNEL_SWITCH] đ chatRows.count = 3267
[22:34:23] ReloadData 15 (3219 messages loaded, 17 pending media)
[22:34:23] DOWNLOADIIING 1b1a78050ebe099b.jpg
[22:34:23] DOWNLOADIIING bae538c2a3076c11.heic
[22:34:23] DOWNLOADIIING ee42d57ffd8ab767.jpg
[22:34:23] DOWNLOADIIING 5cfd84d52271d308.heic
[22:34:23] DOWNLOADIIING 0f2dda66cccdeadf.heic
[22:34:23] DOWNLOADIIING 2a4c7380908d6595.jpg
[22:34:23] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:23] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:34:23] [CELL_UPLOAD] â has active progress=0.0, setting uploading
[22:34:23] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:23] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:23] [PULL_REFRESH] Loaded 3219 messages (first page), displaying 3219 for tab 0, hasMore: true
[22:34:23] ReloadData 15 (pull-to-refresh completed)
[22:34:23] [MENU] đ dismissAnyExistingMenu called
[22:34:23] [MENU] âšī¸ No menu with tag 9999 found
[22:34:23] [MENU] â
dismissAnyExistingMenu completed
[22:34:23] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:23] ReloadData 14 (all 17 media thumbnails loaded) - applying tab 0 filtering
[22:34:24] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:24] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:34:24] [CELL_UPLOAD] â has active progress=0.0, setting uploading
[22:34:24] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:24] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:24] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:24] [SEARCH] contentOffset.y=-187.66666666666666, topInset=40.0, pullDistance=147.66666666666666
[22:34:24] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:24] [SEARCH] topRefresh.isRefreshing=false
[22:34:24] [SEARCH] â
Pull distance 147.66666666666666 >= threshold 80.0
[22:34:24] [SEARCH] đ Showing search bar (first pull)
[22:34:24] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[22:34:24] [SEARCH] â
Setting isSearchBarVisible = true
[22:34:24] [SEARCH] chatSearchBar is nil? false
[22:34:24] [SEARCH] Applied theme: day
[22:34:24] [SEARCH] Adjusting table contentInset.top by +56.0
[22:34:24] [SEARCH] Table contentInset.top: 40.0 -> 96.0
[22:34:24] [SEARCH] Focusing search field
[22:34:24] [MENU] đ dismissAnyExistingMenu called
[22:34:24] [MENU] âšī¸ No menu with tag 9999 found
[22:34:24] [MENU] â
dismissAnyExistingMenu completed
[22:34:24] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=true, tab=0
[22:34:24] [SEARCH] đŊ Hiding search bar (user started scrolling)
[22:34:24] [SEARCH] hideSearchBar() called - animated=true, isSearchBarVisible=true
[22:34:24] [SEARCH] â
Setting isSearchBarVisible = false
[22:34:24] [SEARCH] Adjusting table contentInset.top by -56.0
[22:34:25] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:25] [SEARCH] contentOffset.y=-245.0, topInset=40.0, pullDistance=205.0
[22:34:25] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:25] [SEARCH] topRefresh.isRefreshing=false
[22:34:25] [SEARCH] â
Pull distance 205.0 >= threshold 80.0
[22:34:25] [SEARCH] đ Showing search bar (first pull)
[22:34:25] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[22:34:25] [SEARCH] â
Setting isSearchBarVisible = true
[22:34:25] [SEARCH] chatSearchBar is nil? false
[22:34:25] [SEARCH] Applied theme: day
[22:34:25] [SEARCH] Adjusting table contentInset.top by +56.0
[22:34:25] [SEARCH] Table contentInset.top: 40.0 -> 96.0
[22:34:25] [SEARCH] Focusing search field
[22:34:25] [CHUNKED_UPLOAD] â
Chunk 1/13 complete (7.7%) - progress saved
[22:34:25] [CHUNKED_RESUME] Saved progress: chunk 1 completed
[22:34:25] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:25] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:34:25] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:34:25] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:25] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:25] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:25] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:34:25] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:34:25] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:25] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:25] [MENU] đ dismissAnyExistingMenu called
[22:34:25] [MENU] âšī¸ No menu with tag 9999 found
[22:34:25] [MENU] â
dismissAnyExistingMenu completed
[22:34:25] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=true, tab=0
[22:34:25] [SEARCH] đŊ Hiding search bar (user started scrolling)
[22:34:25] [SEARCH] hideSearchBar() called - animated=true, isSearchBarVisible=true
[22:34:25] [SEARCH] â
Setting isSearchBarVisible = false
[22:34:25] [SEARCH] Adjusting table contentInset.top by -56.0
[22:34:25] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=false
[22:34:25] [SEARCH] đ First pull on Tab 0 - showing search bar instead of refresh
[22:34:25] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[22:34:25] [SEARCH] â
Setting isSearchBarVisible = true
[22:34:25] [SEARCH] chatSearchBar is nil? false
[22:34:25] [SEARCH] Applied theme: day
[22:34:25] [SEARCH] Adjusting table contentInset.top by +56.0
[22:34:25] [SEARCH] Table contentInset.top: 40.0 -> 96.0
[22:34:25] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=true
[22:34:25] [CHAT] top pull-to-refresh triggered on tab 0
[22:34:25] [CHANNEL_SWITCH] đĄ Fetching URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?viewer=1&session_id=ILUIWU&mark_read=0&viewer_id=EDAD55A1-003F-415D-AA60-672B34B504FE
[22:34:25] [SEARCH] Focusing search field
[22:34:25] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:25] [SEARCH] contentOffset.y=-266.3333333333333, topInset=156.0, pullDistance=110.33333333333331
[22:34:25] [SEARCH] threshold=80.0, isSearchBarVisible=true
[22:34:25] [SEARCH] topRefresh.isRefreshing=true
[22:34:25] [SEARCH] â
Pull distance 110.33333333333331 >= threshold 80.0
[22:34:25] [SEARCH] âšī¸ Search bar already visible, allowing refresh
[22:34:26] [MENU] đ dismissAnyExistingMenu called
[22:34:26] [MENU] âšī¸ No menu with tag 9999 found
[22:34:26] [MENU] â
dismissAnyExistingMenu completed
[22:34:26] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=true, tab=0
[22:34:26] [SEARCH] đŊ Hiding search bar (user started scrolling)
[22:34:26] [SEARCH] hideSearchBar() called - animated=true, isSearchBarVisible=true
[22:34:26] [SEARCH] â
Setting isSearchBarVisible = false
[22:34:26] [SEARCH] Adjusting table contentInset.top by -56.0
[22:34:26] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:26] [SEARCH] contentOffset.y=-93.66666666666667, topInset=100.0, pullDistance=-6.333333333333329
[22:34:26] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:26] [SEARCH] topRefresh.isRefreshing=true
[22:34:26] [SEARCH] â Pull distance -6.333333333333329 < threshold 80.0
[22:34:27] [MENU] đ dismissAnyExistingMenu called
[22:34:27] [MENU] âšī¸ No menu with tag 9999 found
[22:34:27] [MENU] â
dismissAnyExistingMenu completed
[22:34:27] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:27] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:27] [SEARCH] contentOffset.y=51.666666666666664, topInset=100.0, pullDistance=-151.66666666666666
[22:34:27] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:27] [SEARCH] topRefresh.isRefreshing=true
[22:34:27] [SEARCH] â Pull distance -151.66666666666666 < threshold 80.0
[22:34:27] [PENDING_UPLOAD] Found pending message: id=4320, file=406a0daa85a0e2a9.mov, uploadStatus=2
[22:34:27] [PENDING_UPLOAD] Found pending message: id=-4, file=, uploadStatus=0
[22:34:27] [PENDING_UPLOAD] Found pending message: id=-9, file=c8f0aac386a60643.jpg, uploadStatus=2
[22:34:27] [PENDING_UPLOAD] Total pending upload messages: 3
[22:34:27] [PENDING_UPLOAD] Preserved 3 pending messages before server refresh
[22:34:27] [PENDING_UPLOAD] Reinserting 3 pending messages
[22:34:27] [PENDING_UPLOAD] â
Reinserted message 4320
[22:34:27] [PENDING_UPLOAD] â
Reinserted message -4
[22:34:27] [PENDING_UPLOAD] â
Reinserted message -9
[22:34:27] DOWNLOADIIING t_66e5f4c7c82fef18.jpg
[22:34:27] DOWNLOADIIING t_97828ef5de49a612.jpg
[22:34:27] [CHANNEL_SWITCH] đ About to set loaded messages. Count=3218
[22:34:27] [CHANNEL_SWITCH] đ Setting allMessagesWithReadBy = 3218 msgs
[22:34:27] [READBY_LOADED] msg 4321: readBy.count=0, readBy=[], isMyMsg=true
[22:34:27] [READBY_LOADED] msg 4320: readBy.count=0, readBy=[], isMyMsg=true
[22:34:27] [READBY_LOADED] msg 4319: readBy.count=0, readBy=[], isMyMsg=true
[22:34:27] [READBY_LOADED] msg 4318: readBy.count=0, readBy=[], isMyMsg=true
[22:34:27] [READBY_LOADED] msg 4317: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:34:27] [PENDING_UPLOAD] âī¸ Skipped pending message id=4320 - already exists in server data
[22:34:27] [PENDING_UPLOAD] â
Merged pending message id=-4, file=
[22:34:27] [PENDING_UPLOAD] âī¸ Skipped pending message id=-9 - already exists in server data
[22:34:27] [PENDING_UPLOAD] Final merged count: 3219 (server: 3218, kept pending: 1)
[22:34:27] [CHANNEL_SWITCH] đ chatRows.count = 3267
[22:34:27] ReloadData 15 (3219 messages loaded, 17 pending media)
[22:34:28] DOWNLOADIIING 1b1a78050ebe099b.jpg
[22:34:28] DOWNLOADIIING bae538c2a3076c11.heic
[22:34:28] DOWNLOADIIING ee42d57ffd8ab767.jpg
[22:34:28] DOWNLOADIIING 5cfd84d52271d308.heic
[22:34:28] DOWNLOADIIING 0f2dda66cccdeadf.heic
[22:34:28] DOWNLOADIIING 2a4c7380908d6595.jpg
[22:34:28] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:28] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:34:28] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:34:28] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:28] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:28] [PULL_REFRESH] Loaded 3219 messages (first page), displaying 3219 for tab 0, hasMore: true
[22:34:28] ReloadData 15 (pull-to-refresh completed)
[22:34:28] [MENU] đ dismissAnyExistingMenu called
[22:34:28] [MENU] âšī¸ No menu with tag 9999 found
[22:34:28] [MENU] â
dismissAnyExistingMenu completed
[22:34:28] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:28] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:28] [SEARCH] contentOffset.y=46.0, topInset=40.0, pullDistance=-86.0
[22:34:28] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:28] [SEARCH] topRefresh.isRefreshing=false
[22:34:28] [SEARCH] â Pull distance -86.0 < threshold 80.0
[22:34:28] [MENU] đ dismissAnyExistingMenu called
[22:34:28] [MENU] âšī¸ No menu with tag 9999 found
[22:34:28] [MENU] â
dismissAnyExistingMenu completed
[22:34:28] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:28] ReloadData 14 (all 17 media thumbnails loaded) - applying tab 0 filtering
[22:34:29] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:29] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:34:29] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:34:29] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:29] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:29] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:29] [SEARCH] contentOffset.y=20.333333333333332, topInset=40.0, pullDistance=-60.33333333333333
[22:34:29] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:29] [SEARCH] topRefresh.isRefreshing=false
[22:34:29] [SEARCH] â Pull distance -60.33333333333333 < threshold 80.0
[22:34:32] [MENU] đ dismissAnyExistingMenu called
[22:34:32] [MENU] âšī¸ No menu with tag 9999 found
[22:34:32] [MENU] â
dismissAnyExistingMenu completed
[22:34:32] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:33] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:33] [SEARCH] contentOffset.y=101.66666666666667, topInset=40.0, pullDistance=-141.66666666666669
[22:34:33] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:33] [SEARCH] topRefresh.isRefreshing=false
[22:34:33] [SEARCH] â Pull distance -141.66666666666669 < threshold 80.0
[22:34:33] [MENU] đ dismissAnyExistingMenu called
[22:34:33] [MENU] âšī¸ No menu with tag 9999 found
[22:34:33] [MENU] â
dismissAnyExistingMenu completed
[22:34:33] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:41] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:41] [SEARCH] contentOffset.y=-23.0, topInset=40.0, pullDistance=-17.0
[22:34:41] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:34:41] [SEARCH] topRefresh.isRefreshing=false
[22:34:41] [SEARCH] â Pull distance -17.0 < threshold 80.0
[22:34:42] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:42] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:34:42] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:34:42] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:42] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:42] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:42] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:34:42] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:34:42] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:42] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:42] [MENU] đ dismissAnyExistingMenu called
[22:34:42] [MENU] âšī¸ No menu with tag 9999 found
[22:34:42] [MENU] â
dismissAnyExistingMenu completed
[22:34:42] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:34:42] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=false
[22:34:42] [SEARCH] đ First pull on Tab 0 - showing search bar instead of refresh
[22:34:42] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[22:34:42] [SEARCH] â
Setting isSearchBarVisible = true
[22:34:42] [SEARCH] chatSearchBar is nil? false
[22:34:42] [SEARCH] Applied theme: day
[22:34:42] [SEARCH] Adjusting table contentInset.top by +56.0
[22:34:42] [SEARCH] Table contentInset.top: 40.0 -> 96.0
[22:34:42] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=true
[22:34:42] [CHAT] top pull-to-refresh triggered on tab 0
[22:34:42] [CHANNEL_SWITCH] đĄ Fetching URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?viewer=1&session_id=ILUIWU&mark_read=0&viewer_id=EDAD55A1-003F-415D-AA60-672B34B504FE
[22:34:42] [SEARCH] Focusing search field
[22:34:42] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:34:42] [SEARCH] contentOffset.y=-245.0, topInset=156.0, pullDistance=89.0
[22:34:42] [SEARCH] threshold=80.0, isSearchBarVisible=true
[22:34:42] [SEARCH] topRefresh.isRefreshing=true
[22:34:42] [SEARCH] â
Pull distance 89.0 >= threshold 80.0
[22:34:42] [SEARCH] âšī¸ Search bar already visible, allowing refresh
[22:34:43] [PENDING_UPLOAD] Found pending message: id=4320, file=406a0daa85a0e2a9.mov, uploadStatus=2
[22:34:43] [PENDING_UPLOAD] Found pending message: id=-4, file=, uploadStatus=0
[22:34:43] [PENDING_UPLOAD] Found pending message: id=-9, file=c8f0aac386a60643.jpg, uploadStatus=2
[22:34:43] [PENDING_UPLOAD] Total pending upload messages: 3
[22:34:43] [PENDING_UPLOAD] Preserved 3 pending messages before server refresh
[22:34:43] [PENDING_UPLOAD] Reinserting 3 pending messages
[22:34:43] [PENDING_UPLOAD] â
Reinserted message 4320
[22:34:43] [PENDING_UPLOAD] â
Reinserted message -4
[22:34:43] [PENDING_UPLOAD] â
Reinserted message -9
[22:34:44] DOWNLOADIIING t_66e5f4c7c82fef18.jpg
[22:34:44] DOWNLOADIIING t_97828ef5de49a612.jpg
[22:34:44] [CHANNEL_SWITCH] đ About to set loaded messages. Count=3218
[22:34:44] [CHANNEL_SWITCH] đ Setting allMessagesWithReadBy = 3218 msgs
[22:34:44] [READBY_LOADED] msg 4321: readBy.count=0, readBy=[], isMyMsg=true
[22:34:44] [READBY_LOADED] msg 4320: readBy.count=0, readBy=[], isMyMsg=true
[22:34:44] [READBY_LOADED] msg 4319: readBy.count=0, readBy=[], isMyMsg=true
[22:34:44] [READBY_LOADED] msg 4318: readBy.count=0, readBy=[], isMyMsg=true
[22:34:44] [READBY_LOADED] msg 4317: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:34:44] [PENDING_UPLOAD] âī¸ Skipped pending message id=4320 - already exists in server data
[22:34:44] [PENDING_UPLOAD] â
Merged pending message id=-4, file=
[22:34:44] [PENDING_UPLOAD] âī¸ Skipped pending message id=-9 - already exists in server data
[22:34:44] [PENDING_UPLOAD] Final merged count: 3219 (server: 3218, kept pending: 1)
[22:34:44] [CHANNEL_SWITCH] đ chatRows.count = 3267
[22:34:44] ReloadData 15 (3219 messages loaded, 17 pending media)
[22:34:44] DOWNLOADIIING 1b1a78050ebe099b.jpg
[22:34:44] DOWNLOADIIING bae538c2a3076c11.heic
[22:34:44] DOWNLOADIIING ee42d57ffd8ab767.jpg
[22:34:44] DOWNLOADIIING 5cfd84d52271d308.heic
[22:34:44] DOWNLOADIIING 0f2dda66cccdeadf.heic
[22:34:44] DOWNLOADIIING 2a4c7380908d6595.jpg
[22:34:44] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:44] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:34:44] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:34:44] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:44] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:44] [PULL_REFRESH] Loaded 3219 messages (first page), displaying 3219 for tab 0, hasMore: true
[22:34:44] ReloadData 15 (pull-to-refresh completed)
[22:34:44] ReloadData 14 (all 17 media thumbnails loaded) - applying tab 0 filtering
[22:34:45] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:45] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:34:45] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:34:45] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:45] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:45] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:45] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:34:45] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:34:45] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:45] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:45] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:45] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:34:45] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:34:45] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:34:45] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:34:45] [LIFECYCLE] App resigning active - cleared crash flag
[22:34:46] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[22:34:46] [SECURITY] Saved background timestamp
[22:34:46] [LIFECYCLE] App entering background - cleared crash flag
[22:34:46] [CLIENT_SIG] Disconnecting
[22:34:46] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[22:34:46] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[22:34:46] In cleanupPeer
[22:34:46] In cleanupPeer
[22:34:46] [LIFECYCLE] WebRTC audio disabled
[22:34:46] [LIFECYCLE] AVAudioSession deactivated
[22:34:46] [LIFECYCLE] All connections stopped
[22:34:46] [CLIENT_SIG] WebSocket closed with code 1001
[22:34:46] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[22:34:46] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/}
[22:34:46] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[22:34:46] [SERVER] Stopped reconnect polling
[22:34:46] Will request stop of video 0
[22:34:46] Will request stop of video 0
[22:34:46] [PIP] Removing 0 tracks from PiP for connection 0
[22:34:46] [PIP] â
All tracks removed for connection 0
[22:34:46] [PIP] Removing 0 tracks from PiP for connection 0
[22:34:46] [PIP] â
All tracks removed for connection 0
[22:40:21] [CLIENT_SIG] Connecting to session ILUIWU as Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[22:40:21] [PUSH] Silent push received
[22:40:21] [PUSH_EMBED] No embedded message_data in notification
[22:40:21] [PUSH] No embedded data, pre-loading messages from server
[22:40:21] [PUSH_PRELOAD] Fetching messages for instant display cache
[22:40:21] [UPLOAD_QUEUE] Scheduling retry #2 for id=547 in 8.0s
[22:40:21] [CLIENT_SIG] WebSocket opened
[22:40:21] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[22:40:21] [CLIENT_SIG] Connected! clientId=_6AOIg5mDY-FVuLk
[22:40:21] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[22:40:21] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[22:40:22] [PUSH_PRELOAD] Fetched 3218 messages - caching for instant display
[22:40:27] [PUSH_PRELOAD] ⥠Pre-cached 3218 messages for instant display
[22:40:27] [PUSH_PRELOAD] â
Pre-load complete with thumbnails
[22:40:27] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 4321, AnyHashable("session_id"): ILUIWU]
[22:40:27] [PUSH] Parsed message_id: 4321
[22:40:27] [PUSH] Parsed operation_type: 3
[22:40:27] [PUSH] Taking direct action: opType=3, messageId=4321
[22:40:27] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=4321
[22:42:52] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[22:42:52] [UPLOAD_DEBUG] Item ID: 547
[22:42:52] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/64241746-612B-4D3F-BB76-5F6D5F47B8AD/Documents/MediaCache/406a0daa85a0e2a9.mov
[22:42:52] [UPLOAD_DEBUG] Random filename: 406a0daa85a0e2a9.mov
[22:42:52] [UPLOAD_DEBUG] Session ID: ILUIWU
[22:42:52] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[22:42:52] [UPLOAD_DEBUG] Retry count: 2
[22:42:52] [BACKGROUND] Background fetch triggered
[22:42:52] [BACKGROUND] Fetching recent messages for pre-cache
[22:42:52] [UPLOAD_STATUS] Updated in-memory status=2 for file: 406a0daa85a0e2a9.mov
[22:42:52] [UPLOAD_DEBUG] File exists: true
[22:42:52] [UPLOAD_DEBUG] File size: 1267972117 bytes (1209.2 MB)
[22:42:52] [UPLOAD_STATUS] Updated status=2 for file: 406a0daa85a0e2a9.mov
[22:42:52] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[22:42:52] [UPLOAD_DEBUG] â Using CHUNKED upload (file > threshold)
[22:42:52] [UPLOAD_DEBUG] --- startChunkedUpload ---
[22:42:52] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:42:52] [UPLOAD_DEBUG] Chunked upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_chunked.php
[22:42:52] [UPLOAD_DEBUG] File size: 1267972117 bytes (1209.2 MB)
[22:42:52] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:42:52] [UPLOAD_DEBUG] Chunk size: 104857600 bytes (100 MB)
[22:42:52] [UPLOAD_DEBUG] Total chunks: 13
[22:42:52] [UPLOAD_DEBUG] Updated DB status to 'uploading_chunked'
[22:42:52] [CHUNKED_RESUME] Checking resume: item.currentChunk=0, item.totalChunks=13, calculated totalChunks=13
[22:42:52] [UPLOAD_DEBUG] Starting chunk upload sequence from chunk 0...
[22:42:52] [CHUNKED_RESUME] Saved chunk info: totalChunks=13, fileSize=1267972117
[22:42:53] [CLIENT_SIG] Task completed with error: Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalWebSocketTask <960DB1A7-76DD-492E-9A2D-5C01EE8D6666>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <960DB1A7-76DD-492E-9A2D-5C01EE8D6666>.<1>, NSLocalizedDescription=The network connection was lost.}
[22:42:53] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[22:42:53] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=89 "Operation canceled" UserInfo={NSDescription=Operation canceled}
[22:42:53] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[22:42:57] [CLIENT_SIG] Connecting to session ILUIWU as Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[22:42:59] [CLIENT_SIG] WebSocket opened
[22:42:59] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[22:42:59] [CLIENT_SIG] Connected! clientId=5-HhDu0TjvaTALjr
[22:43:00] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[22:43:00] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[22:43:09] [BACKGROUND] Fetched 3218 messages - saving to DB and pre-caching
[22:43:12] [BACKGROUND] Pre-cached 3218 ChatMessage objects for instant display
[22:43:13] [BACKGROUND] Pre-downloaded 0 thumbnails
[22:43:13] [BACKGROUND] â
Background fetch complete with thumbnail pre-download
[22:46:07] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[22:46:07] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[22:46:07] [LIFECYCLE] App entering foreground - restoring connections
[22:46:07] [UPLOAD_RETRY] No pending uploads to retry
[22:46:07] [LIFECYCLE] Merged 383 reactions from local DB
[22:46:07] [UPLOAD_QUEUE] Scheduling retry #3 for id=547 in 16.0s
[22:46:07] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:07] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=2
[22:46:07] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:46:07] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:07] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:46:07] [LIFECYCLE] WebRTC audio re-enabled
[22:46:07] [AUDIO] â
Chat mode - audio will be managed by WebRTCViewer (no microphone)
[22:46:07] [VIEWER] Reconnecting after background - querying agents
[22:46:07] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort}
[22:46:07] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[22:46:07] [CLIENT_SIG] Task completed with error: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalWebSocketTask <8C0F86B2-5921-4E32-8F64-250CACA9FB27>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <8C0F86B2-5921-4E32-8F64-250CACA9FB27>.<1>}
[22:46:07] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[22:46:08] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[22:46:08] [SECURITY] Timeout exceeded - requiring re-authentication
[22:46:08] [PUSH_DEBUG] đĸ App became ACTIVE - resetting badges and triggering pollEventsNow
[22:46:08] [PUSH] handlePollEventsNotification userInfo: [:]
[22:46:08] [PUSH] No message_id in userInfo
[22:46:08] [PUSH] No operation_type in userInfo
[22:46:08] [FAST_REFRESH] Evolution disabled - performing incremental sync
[22:46:08] [FAST_REFRESH] Already have 50 messages - skipping local DB load
[22:46:08] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[22:46:08] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:08] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=2
[22:46:08] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:46:08] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:08] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:46:08] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[22:46:08] [INCREMENTAL_SYNC] đĄ Fetching messages since ID 4321
[22:46:08] [INCREMENTAL_SYNC] â
No new messages
[22:46:08] [FAST_REFRESH] Incremental sync complete - 50 messages
[22:46:09] [COMBINED_FETCH] Loaded 3218 read receipts, 382 messages with reactions
[22:46:09] [FAST_REFRESH] Enriched 49 messages with readBy data
[22:46:09] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:09] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=2
[22:46:09] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:46:09] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:09] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:46:11] [PIN_AUTH] Incorrect PIN
[22:46:12] [CLIENT_SIG] Connecting to session ILUIWU as Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[22:46:12] [CLIENT_SIG] WebSocket opened
[22:46:12] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[22:46:12] [CLIENT_SIG] Connected! clientId=UC-VfVKwib-4yGfz
[22:46:12] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[22:46:12] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[22:46:13] [PIN_AUTH] Correct PIN
[22:46:13] [SECURITY] Restored real session: ILUIWU
[22:46:13] [SECURITY] Restored real session: ILUIWU
[22:46:13] [LOCK] â
PIN auth callback - setting isAuthenticated = true
[22:46:13] [FAKE MODE] Exiting fake mode, restoring real session
[22:46:13] [SECURITY] Restored real session: ILUIWU
[22:46:13] [SECURITY] Saved real session: ILUIWU
[22:46:13] [FAKE MODE] â
Restored real session: ILUIWU
[22:46:14] DOWNLOADIIING 1b1a78050ebe099b.jpg
[22:46:14] DOWNLOADIIING bae538c2a3076c11.heic
[22:46:14] DOWNLOADIIING ee42d57ffd8ab767.jpg
[22:46:14] DOWNLOADIIING 5cfd84d52271d308.heic
[22:46:14] DOWNLOADIIING 0f2dda66cccdeadf.heic
[22:46:14] DOWNLOADIIING 2a4c7380908d6595.jpg
[22:46:14] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:14] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:46:14] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:46:14] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:14] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:46:14] [MENU] đ dismissAnyExistingMenu called
[22:46:14] [MENU] âšī¸ No menu with tag 9999 found
[22:46:14] [MENU] â
dismissAnyExistingMenu completed
[22:46:14] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=true, tab=0
[22:46:14] [SEARCH] đŊ Hiding search bar (user started scrolling)
[22:46:14] [SEARCH] hideSearchBar() called - animated=true, isSearchBarVisible=true
[22:46:14] [SEARCH] â
Setting isSearchBarVisible = false
[22:46:14] [SEARCH] Adjusting table contentInset.top by -56.0
[22:46:15] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=false
[22:46:15] [SEARCH] đ First pull on Tab 0 - showing search bar instead of refresh
[22:46:15] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[22:46:15] [SEARCH] â
Setting isSearchBarVisible = true
[22:46:15] [SEARCH] chatSearchBar is nil? false
[22:46:15] [SEARCH] Applied theme: day
[22:46:15] [SEARCH] Adjusting table contentInset.top by +56.0
[22:46:15] [SEARCH] Table contentInset.top: 40.0 -> 96.0
[22:46:15] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=true
[22:46:15] [CHAT] top pull-to-refresh triggered on tab 0
[22:46:15] [CHANNEL_SWITCH] đĄ Fetching URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?viewer=1&session_id=ILUIWU&mark_read=0&viewer_id=EDAD55A1-003F-415D-AA60-672B34B504FE
[22:46:15] [SEARCH] Focusing search field
[22:46:15] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:46:15] [SEARCH] contentOffset.y=-218.66666666666666, topInset=156.0, pullDistance=62.66666666666666
[22:46:15] [SEARCH] threshold=80.0, isSearchBarVisible=true
[22:46:15] [SEARCH] topRefresh.isRefreshing=true
[22:46:15] [SEARCH] â Pull distance 62.66666666666666 < threshold 80.0
[22:46:16] [MENU] đ dismissAnyExistingMenu called
[22:46:16] [MENU] âšī¸ No menu with tag 9999 found
[22:46:16] [MENU] â
dismissAnyExistingMenu completed
[22:46:16] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=true, tab=0
[22:46:16] [SEARCH] đŊ Hiding search bar (user started scrolling)
[22:46:16] [SEARCH] hideSearchBar() called - animated=true, isSearchBarVisible=true
[22:46:16] [SEARCH] â
Setting isSearchBarVisible = false
[22:46:16] [SEARCH] Adjusting table contentInset.top by -56.0
[22:46:16] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:46:16] [SEARCH] contentOffset.y=-90.0, topInset=100.0, pullDistance=-10.0
[22:46:16] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:46:16] [SEARCH] topRefresh.isRefreshing=true
[22:46:16] [SEARCH] â Pull distance -10.0 < threshold 80.0
[22:46:16] [MENU] đ dismissAnyExistingMenu called
[22:46:16] [MENU] âšī¸ No menu with tag 9999 found
[22:46:16] [MENU] â
dismissAnyExistingMenu completed
[22:46:16] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:46:17] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:46:17] [SEARCH] contentOffset.y=-100.0, topInset=100.0, pullDistance=-0.0
[22:46:17] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:46:17] [SEARCH] topRefresh.isRefreshing=true
[22:46:17] [SEARCH] â Pull distance -0.0 < threshold 80.0
[22:46:17] [PENDING_UPLOAD] Found pending message: id=-4, file=, uploadStatus=0
[22:46:17] [PENDING_UPLOAD] Found pending message: id=-9, file=c8f0aac386a60643.jpg, uploadStatus=2
[22:46:17] [PENDING_UPLOAD] Total pending upload messages: 2
[22:46:17] [PENDING_UPLOAD] Preserved 2 pending messages before server refresh
[22:46:17] [PENDING_UPLOAD] Reinserting 2 pending messages
[22:46:17] [PENDING_UPLOAD] â
Reinserted message -4
[22:46:17] [PENDING_UPLOAD] â
Reinserted message -9
[22:46:17] [MENU] đ dismissAnyExistingMenu called
[22:46:17] [MENU] âšī¸ No menu with tag 9999 found
[22:46:17] [MENU] â
dismissAnyExistingMenu completed
[22:46:17] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:46:17] DOWNLOADIIING t_66e5f4c7c82fef18.jpg
[22:46:17] DOWNLOADIIING t_97828ef5de49a612.jpg
[22:46:17] [CHANNEL_SWITCH] đ About to set loaded messages. Count=3218
[22:46:17] [CHANNEL_SWITCH] đ Setting allMessagesWithReadBy = 3218 msgs
[22:46:17] [READBY_LOADED] msg 4321: readBy.count=1, readBy=["3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF"], isMyMsg=true
[22:46:17] [READBY_LOADED] msg 4320: readBy.count=0, readBy=[], isMyMsg=true
[22:46:17] [READBY_LOADED] msg 4319: readBy.count=0, readBy=[], isMyMsg=true
[22:46:17] [READBY_LOADED] msg 4318: readBy.count=0, readBy=[], isMyMsg=true
[22:46:17] [READBY_LOADED] msg 4317: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:46:17] [PENDING_UPLOAD] â
Merged pending message id=-4, file=
[22:46:17] [PENDING_UPLOAD] âī¸ Skipped pending message id=-9 - already exists in server data
[22:46:17] [PENDING_UPLOAD] Final merged count: 3219 (server: 3218, kept pending: 1)
[22:46:17] [CHANNEL_SWITCH] đ chatRows.count = 3267
[22:46:17] ReloadData 15 (3219 messages loaded, 17 pending media)
[22:46:18] DOWNLOADIIING 1b1a78050ebe099b.jpg
[22:46:18] DOWNLOADIIING bae538c2a3076c11.heic
[22:46:18] DOWNLOADIIING ee42d57ffd8ab767.jpg
[22:46:18] DOWNLOADIIING 5cfd84d52271d308.heic
[22:46:18] DOWNLOADIIING 0f2dda66cccdeadf.heic
[22:46:18] DOWNLOADIIING 2a4c7380908d6595.jpg
[22:46:18] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:18] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:46:18] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:46:18] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:18] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:46:18] [PULL_REFRESH] Loaded 3219 messages (first page), displaying 3219 for tab 0, hasMore: true
[22:46:18] ReloadData 15 (pull-to-refresh completed)
[22:46:18] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:46:18] [SEARCH] contentOffset.y=-265.3333333333333, topInset=40.0, pullDistance=225.33333333333331
[22:46:18] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:46:18] [SEARCH] topRefresh.isRefreshing=false
[22:46:18] [SEARCH] â
Pull distance 225.33333333333331 >= threshold 80.0
[22:46:18] [SEARCH] đ Showing search bar (first pull)
[22:46:18] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[22:46:18] [SEARCH] â
Setting isSearchBarVisible = true
[22:46:18] [SEARCH] chatSearchBar is nil? false
[22:46:18] [SEARCH] Applied theme: day
[22:46:18] [SEARCH] Adjusting table contentInset.top by +56.0
[22:46:18] [SEARCH] Table contentInset.top: 40.0 -> 96.0
[22:46:18] ReloadData 14 (all 17 media thumbnails loaded) - applying tab 0 filtering
[22:46:19] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:19] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:46:19] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:46:19] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:19] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:46:19] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:19] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:46:19] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:46:19] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:19] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:46:19] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:19] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:46:19] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:46:19] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:19] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:46:19] [SEARCH] Focusing search field
[22:46:19] [CENTER_CONTENT] boundsSize: (0.0, 0.0), contentSize: (440.0, 956.0)
[22:46:19] [CENTER_CONTENT] topSafeArea: 0.0, controlsHeight: 76.0, visibleHeight: -76.0
[22:46:19] [CENTER_CONTENT] Content larger than visible - Setting insets: UIEdgeInsets(top: 0.0, left: 0.0, bottom: 76.0, right: 0.0)
[22:46:23] [MENU] đ dismissAnyExistingMenu called
[22:46:23] [MENU] âšī¸ No menu with tag 9999 found
[22:46:23] [MENU] â
dismissAnyExistingMenu completed
[22:46:23] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=true, tab=0
[22:46:23] [SEARCH] đŊ Hiding search bar (user started scrolling)
[22:46:23] [SEARCH] hideSearchBar() called - animated=true, isSearchBarVisible=true
[22:46:23] [SEARCH] â
Setting isSearchBarVisible = false
[22:46:23] [SEARCH] Adjusting table contentInset.top by -56.0
[22:46:23] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=false
[22:46:23] [SEARCH] đ First pull on Tab 0 - showing search bar instead of refresh
[22:46:23] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[22:46:23] [SEARCH] â
Setting isSearchBarVisible = true
[22:46:23] [SEARCH] chatSearchBar is nil? false
[22:46:23] [SEARCH] Applied theme: day
[22:46:23] [SEARCH] Adjusting table contentInset.top by +56.0
[22:46:23] [SEARCH] Table contentInset.top: 40.0 -> 96.0
[22:46:23] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=true
[22:46:23] [CHAT] top pull-to-refresh triggered on tab 0
[22:46:23] [CHANNEL_SWITCH] đĄ Fetching URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?viewer=1&session_id=ILUIWU&mark_read=0&viewer_id=EDAD55A1-003F-415D-AA60-672B34B504FE
[22:46:23] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:46:23] [SEARCH] contentOffset.y=-199.0, topInset=156.0, pullDistance=43.0
[22:46:23] [SEARCH] threshold=80.0, isSearchBarVisible=true
[22:46:23] [SEARCH] topRefresh.isRefreshing=true
[22:46:23] [SEARCH] â Pull distance 43.0 < threshold 80.0
[22:46:23] [SEARCH] Focusing search field
[22:46:23] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[22:46:23] [UPLOAD_DEBUG] Item ID: 547
[22:46:23] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/64241746-612B-4D3F-BB76-5F6D5F47B8AD/Documents/MediaCache/406a0daa85a0e2a9.mov
[22:46:23] [UPLOAD_DEBUG] Random filename: 406a0daa85a0e2a9.mov
[22:46:23] [UPLOAD_DEBUG] Session ID: ILUIWU
[22:46:23] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[22:46:23] [UPLOAD_DEBUG] Retry count: 3
[22:46:23] [UPLOAD_STATUS] Updated in-memory status=2 for file: 406a0daa85a0e2a9.mov
[22:46:23] [UPLOAD_DEBUG] File exists: true
[22:46:23] [UPLOAD_STATUS] Updated status=2 for file: 406a0daa85a0e2a9.mov
[22:46:23] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:23] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:46:23] [UPLOAD_DEBUG] File size: 1267972117 bytes (1209.2 MB)
[22:46:23] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[22:46:23] [UPLOAD_DEBUG] â Using CHUNKED upload (file > threshold)
[22:46:23] [UPLOAD_DEBUG] --- startChunkedUpload ---
[22:46:23] [UPLOAD_DEBUG] Chunked upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_chunked.php
[22:46:23] [UPLOAD_DEBUG] File size: 1267972117 bytes (1209.2 MB)
[22:46:23] [UPLOAD_DEBUG] Chunk size: 104857600 bytes (100 MB)
[22:46:23] [UPLOAD_DEBUG] Total chunks: 13
[22:46:23] [UPLOAD_DEBUG] Updated DB status to 'uploading_chunked'
[22:46:23] [CHUNKED_RESUME] Checking resume: item.currentChunk=0, item.totalChunks=13, calculated totalChunks=13
[22:46:23] [UPLOAD_DEBUG] Starting chunk upload sequence from chunk 0...
[22:46:23] [CHUNKED_RESUME] Saved chunk info: totalChunks=13, fileSize=1267972117
[22:46:24] [MENU] đ dismissAnyExistingMenu called
[22:46:24] [MENU] âšī¸ No menu with tag 9999 found
[22:46:24] [MENU] â
dismissAnyExistingMenu completed
[22:46:24] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=true, tab=0
[22:46:24] [SEARCH] đŊ Hiding search bar (user started scrolling)
[22:46:24] [SEARCH] hideSearchBar() called - animated=true, isSearchBarVisible=true
[22:46:24] [SEARCH] â
Setting isSearchBarVisible = false
[22:46:24] [SEARCH] Adjusting table contentInset.top by -56.0
[22:46:24] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:46:24] [SEARCH] contentOffset.y=-102.33333333333333, topInset=100.0, pullDistance=2.3333333333333286
[22:46:24] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:46:24] [SEARCH] topRefresh.isRefreshing=true
[22:46:24] [SEARCH] â Pull distance 2.3333333333333286 < threshold 80.0
[22:46:25] [MENU] đ dismissAnyExistingMenu called
[22:46:25] [MENU] âšī¸ No menu with tag 9999 found
[22:46:25] [MENU] â
dismissAnyExistingMenu completed
[22:46:25] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:46:25] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:46:25] [SEARCH] contentOffset.y=68.0, topInset=100.0, pullDistance=-168.0
[22:46:25] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:46:25] [SEARCH] topRefresh.isRefreshing=true
[22:46:25] [SEARCH] â Pull distance -168.0 < threshold 80.0
[22:46:25] [MENU] đ dismissAnyExistingMenu called
[22:46:25] [MENU] âšī¸ No menu with tag 9999 found
[22:46:25] [MENU] â
dismissAnyExistingMenu completed
[22:46:25] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:46:25] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:46:25] [SEARCH] contentOffset.y=15.333333333333334, topInset=100.0, pullDistance=-115.33333333333333
[22:46:25] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:46:25] [SEARCH] topRefresh.isRefreshing=true
[22:46:25] [SEARCH] â Pull distance -115.33333333333333 < threshold 80.0
[22:46:29] [PENDING_UPLOAD] Found pending message: id=4320, file=406a0daa85a0e2a9.mov, uploadStatus=2
[22:46:29] [PENDING_UPLOAD] Found pending message: id=-4, file=, uploadStatus=0
[22:46:29] [PENDING_UPLOAD] Found pending message: id=-9, file=c8f0aac386a60643.jpg, uploadStatus=2
[22:46:29] [PENDING_UPLOAD] Total pending upload messages: 3
[22:46:29] [PENDING_UPLOAD] Preserved 3 pending messages before server refresh
[22:46:29] [PENDING_UPLOAD] Reinserting 3 pending messages
[22:46:29] [PENDING_UPLOAD] â
Reinserted message 4320
[22:46:29] [PENDING_UPLOAD] â
Reinserted message -4
[22:46:29] [PENDING_UPLOAD] â
Reinserted message -9
[22:46:29] [TROUBLESHOOT] Troubleshoot button tapped!
[22:46:29] DOWNLOADIIING t_66e5f4c7c82fef18.jpg
[22:46:29] DOWNLOADIIING t_97828ef5de49a612.jpg
[22:46:29] [CHANNEL_SWITCH] đ About to set loaded messages. Count=3218
[22:46:29] [CHANNEL_SWITCH] đ Setting allMessagesWithReadBy = 3218 msgs
[22:46:29] [READBY_LOADED] msg 4321: readBy.count=1, readBy=["3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF"], isMyMsg=true
[22:46:29] [READBY_LOADED] msg 4320: readBy.count=0, readBy=[], isMyMsg=true
[22:46:29] [READBY_LOADED] msg 4319: readBy.count=0, readBy=[], isMyMsg=true
[22:46:29] [READBY_LOADED] msg 4318: readBy.count=0, readBy=[], isMyMsg=true
[22:46:29] [READBY_LOADED] msg 4317: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:46:29] [PENDING_UPLOAD] âī¸ Skipped pending message id=4320 - already exists in server data
[22:46:29] [PENDING_UPLOAD] â
Merged pending message id=-4, file=
[22:46:29] [PENDING_UPLOAD] âī¸ Skipped pending message id=-9 - already exists in server data
[22:46:29] [PENDING_UPLOAD] Final merged count: 3219 (server: 3218, kept pending: 1)
[22:46:29] [CHANNEL_SWITCH] đ chatRows.count = 3267
[22:46:29] ReloadData 15 (3219 messages loaded, 17 pending media)
[22:46:30] DOWNLOADIIING 1b1a78050ebe099b.jpg
[22:46:30] DOWNLOADIIING bae538c2a3076c11.heic
[22:46:30] DOWNLOADIIING ee42d57ffd8ab767.jpg
[22:46:30] DOWNLOADIIING 5cfd84d52271d308.heic
[22:46:30] DOWNLOADIIING 0f2dda66cccdeadf.heic
[22:46:30] DOWNLOADIIING 2a4c7380908d6595.jpg
[22:46:30] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:30] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:46:30] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:46:30] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:30] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:46:30] [PULL_REFRESH] Loaded 3219 messages (first page), displaying 3219 for tab 3, hasMore: true
[22:46:30] ReloadData 15 (pull-to-refresh completed)
[22:46:30] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:30] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:46:30] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:46:30] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:30] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:46:30] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:30] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:46:30] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:46:30] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:30] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:46:31] ReloadData 14 (all 17 media thumbnails loaded) - applying tab 3 filtering
[22:46:31] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:31] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:46:31] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:46:31] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:31] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:46:31] [UPLOAD_QUEUE] đ Restarted 1 stuck uploads
[22:46:32] [UPLOAD_QUEUE] Found 1 pending uploads to resume
[22:46:34] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[22:46:34] [UPLOAD_DEBUG] Item ID: 547
[22:46:34] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/64241746-612B-4D3F-BB76-5F6D5F47B8AD/Documents/MediaCache/406a0daa85a0e2a9.mov
[22:46:34] [UPLOAD_DEBUG] Random filename: 406a0daa85a0e2a9.mov
[22:46:34] [UPLOAD_DEBUG] Session ID: ILUIWU
[22:46:34] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[22:46:34] [UPLOAD_DEBUG] Retry count: 0
[22:46:34] [UPLOAD_STATUS] Updated in-memory status=2 for file: 406a0daa85a0e2a9.mov
[22:46:34] [UPLOAD_DEBUG] File exists: true
[22:46:34] [UPLOAD_STATUS] Updated status=2 for file: 406a0daa85a0e2a9.mov
[22:46:34] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:34] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:46:34] [UPLOAD_DEBUG] File size: 1267972117 bytes (1209.2 MB)
[22:46:34] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[22:46:34] [UPLOAD_DEBUG] â Using CHUNKED upload (file > threshold)
[22:46:34] [UPLOAD_DEBUG] --- startChunkedUpload ---
[22:46:34] [UPLOAD_DEBUG] Chunked upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_chunked.php
[22:46:34] [UPLOAD_DEBUG] File size: 1267972117 bytes (1209.2 MB)
[22:46:34] [UPLOAD_DEBUG] Chunk size: 104857600 bytes (100 MB)
[22:46:34] [UPLOAD_DEBUG] Total chunks: 13
[22:46:34] [UPLOAD_DEBUG] Updated DB status to 'uploading_chunked'
[22:46:34] [CHUNKED_RESUME] Checking resume: item.currentChunk=0, item.totalChunks=13, calculated totalChunks=13
[22:46:34] [UPLOAD_DEBUG] Starting chunk upload sequence from chunk 0...
[22:46:34] [CHUNKED_RESUME] Saved chunk info: totalChunks=13, fileSize=1267972117
[22:46:35] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:35] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=2
[22:46:35] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:46:35] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:46:35] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:46:50] [MENU] đ dismissAnyExistingMenu called
[22:46:50] [MENU] âšī¸ No menu with tag 9999 found
[22:46:50] [MENU] â
dismissAnyExistingMenu completed
[22:46:50] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:46:51] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:46:51] [SEARCH] contentOffset.y=6.666666666666667, topInset=40.0, pullDistance=-46.666666666666664
[22:46:51] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:46:51] [SEARCH] topRefresh.isRefreshing=false
[22:46:51] [SEARCH] â Pull distance -46.666666666666664 < threshold 80.0
[22:46:54] [MENU] đ dismissAnyExistingMenu called
[22:46:54] [MENU] âšī¸ No menu with tag 9999 found
[22:46:54] [MENU] â
dismissAnyExistingMenu completed
[22:46:54] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:46:55] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:46:55] [SEARCH] contentOffset.y=-9.333333333333334, topInset=40.0, pullDistance=-30.666666666666664
[22:46:55] [SEARCH] threshold=80.0, isSearchBarVisible=false
[22:46:55] [SEARCH] topRefresh.isRefreshing=false
[22:46:55] [SEARCH] â Pull distance -30.666666666666664 < threshold 80.0
[22:47:02] [CHUNKED_UPLOAD] â
Chunk 1/13 complete (7.7%) - progress saved
[22:47:02] [CHUNKED_RESUME] Saved progress: chunk 1 completed
[22:47:08] [MENU] đ dismissAnyExistingMenu called
[22:47:08] [MENU] âšī¸ No menu with tag 9999 found
[22:47:08] [MENU] â
dismissAnyExistingMenu completed
[22:47:08] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[22:47:08] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=false
[22:47:08] [SEARCH] đ First pull on Tab 0 - showing search bar instead of refresh
[22:47:08] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[22:47:08] [SEARCH] â
Setting isSearchBarVisible = true
[22:47:08] [SEARCH] chatSearchBar is nil? false
[22:47:08] [SEARCH] Applied theme: day
[22:47:08] [SEARCH] Adjusting table contentInset.top by +56.0
[22:47:08] [SEARCH] Table contentInset.top: 40.0 -> 96.0
[22:47:08] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=true
[22:47:08] [CHAT] top pull-to-refresh triggered on tab 0
[22:47:08] [CHANNEL_SWITCH] đĄ Fetching URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?viewer=1&session_id=ILUIWU&mark_read=0&viewer_id=EDAD55A1-003F-415D-AA60-672B34B504FE
[22:47:08] [SEARCH] Focusing search field
[22:47:08] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[22:47:08] [SEARCH] contentOffset.y=-219.66666666666666, topInset=156.0, pullDistance=63.66666666666666
[22:47:08] [SEARCH] threshold=80.0, isSearchBarVisible=true
[22:47:08] [SEARCH] topRefresh.isRefreshing=true
[22:47:08] [SEARCH] â Pull distance 63.66666666666666 < threshold 80.0
[22:47:09] [PENDING_UPLOAD] Found pending message: id=4320, file=406a0daa85a0e2a9.mov, uploadStatus=2
[22:47:09] [PENDING_UPLOAD] Found pending message: id=-4, file=, uploadStatus=0
[22:47:09] [PENDING_UPLOAD] Found pending message: id=-9, file=c8f0aac386a60643.jpg, uploadStatus=2
[22:47:09] [PENDING_UPLOAD] Total pending upload messages: 3
[22:47:09] [PENDING_UPLOAD] Preserved 3 pending messages before server refresh
[22:47:09] [PENDING_UPLOAD] Reinserting 3 pending messages
[22:47:09] [PENDING_UPLOAD] â
Reinserted message 4320
[22:47:09] [PENDING_UPLOAD] â
Reinserted message -4
[22:47:09] [PENDING_UPLOAD] â
Reinserted message -9
[22:47:09] DOWNLOADIIING t_66e5f4c7c82fef18.jpg
[22:47:09] DOWNLOADIIING t_97828ef5de49a612.jpg
[22:47:09] [CHANNEL_SWITCH] đ About to set loaded messages. Count=3218
[22:47:09] [CHANNEL_SWITCH] đ Setting allMessagesWithReadBy = 3218 msgs
[22:47:09] [READBY_LOADED] msg 4321: readBy.count=1, readBy=["3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF"], isMyMsg=true
[22:47:09] [READBY_LOADED] msg 4320: readBy.count=0, readBy=[], isMyMsg=true
[22:47:09] [READBY_LOADED] msg 4319: readBy.count=0, readBy=[], isMyMsg=true
[22:47:09] [READBY_LOADED] msg 4318: readBy.count=0, readBy=[], isMyMsg=true
[22:47:09] [READBY_LOADED] msg 4317: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[22:47:09] [PENDING_UPLOAD] âī¸ Skipped pending message id=4320 - already exists in server data
[22:47:09] [PENDING_UPLOAD] â
Merged pending message id=-4, file=
[22:47:09] [PENDING_UPLOAD] âī¸ Skipped pending message id=-9 - already exists in server data
[22:47:09] [PENDING_UPLOAD] Final merged count: 3219 (server: 3218, kept pending: 1)
[22:47:09] [CHANNEL_SWITCH] đ chatRows.count = 3267
[22:47:09] ReloadData 15 (3219 messages loaded, 17 pending media)
[22:47:10] DOWNLOADIIING 1b1a78050ebe099b.jpg
[22:47:10] DOWNLOADIIING bae538c2a3076c11.heic
[22:47:10] DOWNLOADIIING ee42d57ffd8ab767.jpg
[22:47:10] DOWNLOADIIING 5cfd84d52271d308.heic
[22:47:10] DOWNLOADIIING 0f2dda66cccdeadf.heic
[22:47:10] DOWNLOADIIING 2a4c7380908d6595.jpg
[22:47:10] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:47:10] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:47:10] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:47:10] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:47:10] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:47:10] [PULL_REFRESH] Loaded 3219 messages (first page), displaying 3219 for tab 0, hasMore: true
[22:47:10] ReloadData 15 (pull-to-refresh completed)
[22:47:10] ReloadData 14 (all 17 media thumbnails loaded) - applying tab 0 filtering
[22:47:10] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:47:10] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:47:10] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:47:10] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:47:10] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:47:10] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:47:10] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:47:10] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:47:10] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:47:10] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071
[22:47:10] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:47:10] [CELL_UPLOAD] configure: msgId=4320, file=406a0daa85a0e2a9.mov, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[22:47:10] [CELL_UPLOAD] â has active progress=0.07692307692307693, setting uploading
[22:47:10] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07692307692307693) for file=406a0daa85a0e2a9.mov, overlayExists=true
[22:47:10] [CELL_UPLOAD] â uploading: progressBar.isHidden=false, overlay.isHidden=false, alpha=0.699999988079071