feat : Posts in Event Details

This commit is contained in:
Yaël Perret
2025-08-08 17:49:03 +02:00
parent 29b10f81f5
commit 174f86e581
44 changed files with 584 additions and 79 deletions

View File

@@ -8,5 +8,5 @@
"top_topics_and_observing_domains": [ ]
} ],
"hex_encoded_hmac_key": "416A797C6AAA772A584FBCDBCCBA7E8FC2701910461A24DAC2F72331366DFC48",
"next_scheduled_calculation_time": "13399546700922458"
"next_scheduled_calculation_time": "13399546700922469"
}

View File

@@ -1,3 +1,3 @@
2025/07/11-09:55:25.517 108c Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Extension Rules/MANIFEST-000001
2025/07/11-09:55:25.520 108c Recovering log #3
2025/07/11-09:55:25.520 108c Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Extension Rules/000003.log
2025/08/08-17:31:58.333 5788 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Extension Rules/MANIFEST-000001
2025/08/08-17:31:58.334 5788 Recovering log #3
2025/08/08-17:31:58.337 5788 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Extension Rules/000003.log

View File

@@ -1,3 +1,3 @@
2025/07/11-09:55:25.526 108c Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Extension Scripts/MANIFEST-000001
2025/07/11-09:55:25.527 108c Recovering log #3
2025/07/11-09:55:25.527 108c Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Extension Scripts/000003.log
2025/08/08-17:31:58.346 9740 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Extension Scripts/MANIFEST-000001
2025/08/08-17:31:58.347 9740 Recovering log #3
2025/08/08-17:31:58.348 9740 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Extension Scripts/000003.log

View File

@@ -1,3 +1,3 @@
2025/08/06-10:18:01.945 8690 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Extension State/MANIFEST-000001
2025/08/06-10:18:01.945 8690 Recovering log #3
2025/08/06-10:18:01.946 8690 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Extension State/000003.log
2025/08/08-17:31:58.658 8c8c Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Extension State/MANIFEST-000001
2025/08/08-17:31:58.658 8c8c Recovering log #3
2025/08/08-17:31:58.658 8c8c Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Extension State/000003.log

View File

@@ -1,3 +1,3 @@
2025/07/11-09:55:25.697 f14 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Extension State/MANIFEST-000001
2025/07/11-09:55:25.697 f14 Recovering log #3
2025/07/11-09:55:25.698 f14 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Extension State/000003.log
2025/08/08-15:24:20.881 921c Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Extension State/MANIFEST-000001
2025/08/08-15:24:20.881 921c Recovering log #3
2025/08/08-15:24:20.882 921c Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Extension State/000003.log

View File

@@ -1,3 +1,3 @@
2025/08/06-10:18:20.974 3fd8 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\GCM Store\Encryption/MANIFEST-000001
2025/08/06-10:18:20.975 3fd8 Recovering log #3
2025/08/06-10:18:20.975 3fd8 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\GCM Store\Encryption/000003.log
2025/08/08-15:24:34.134 25e8 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\GCM Store\Encryption/MANIFEST-000001
2025/08/08-15:24:34.134 25e8 Recovering log #3
2025/08/08-15:24:34.135 25e8 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\GCM Store\Encryption/000003.log

View File

@@ -1,3 +1,3 @@
2025/06/29-13:55:42.657 2224 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.dc9734fc\flutter_tools_chrome_device.d30622eb\Default\GCM Store\Encryption/MANIFEST-000001
2025/06/29-13:55:42.658 2224 Recovering log #3
2025/06/29-13:55:42.658 2224 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.dc9734fc\flutter_tools_chrome_device.d30622eb\Default\GCM Store\Encryption/000003.log
2025/08/06-10:18:20.974 3fd8 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\GCM Store\Encryption/MANIFEST-000001
2025/08/06-10:18:20.975 3fd8 Recovering log #3
2025/08/06-10:18:20.975 3fd8 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\GCM Store\Encryption/000003.log

View File

@@ -1,3 +1,3 @@
2025/08/06-10:18:01.843 9ec4 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Local Storage\leveldb/MANIFEST-000001
2025/08/06-10:18:01.848 9ec4 Recovering log #3
2025/08/06-10:18:01.850 9ec4 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Local Storage\leveldb/000003.log
2025/08/08-17:31:58.376 21f8 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Local Storage\leveldb/MANIFEST-000001
2025/08/08-17:31:58.392 21f8 Recovering log #3
2025/08/08-17:31:58.395 21f8 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Local Storage\leveldb/000003.log

View File

@@ -1,3 +1,3 @@
2025/07/11-09:55:25.542 60f8 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Local Storage\leveldb/MANIFEST-000001
2025/07/11-09:55:25.546 60f8 Recovering log #3
2025/07/11-09:55:25.547 60f8 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Local Storage\leveldb/000003.log
2025/08/08-15:24:20.764 6fbc Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Local Storage\leveldb/MANIFEST-000001
2025/08/08-15:24:20.771 6fbc Recovering log #3
2025/08/08-15:24:20.773 6fbc Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Local Storage\leveldb/000003.log

View File

@@ -1 +1 @@
{"net":{"http_server_properties":{"servers":[{"anonymization":["FAAAABAAAABodHRwczovL2d2dDEuY29t",false,0],"network_stats":{"srtt":25215},"server":"https://redirector.gvt1.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13401533883096701","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":42077},"server":"https://accounts.google.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13401533904171284","port":443,"protocol_str":"quic"}],"anonymization":["MAAAACsAAABodHRwczovL29wdGltaXphdGlvbmd1aWRlLXBhLmdvb2dsZWFwaXMuY29tAA==",false,0],"network_stats":{"srtt":19582},"server":"https://optimizationguide-pa.googleapis.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13401534652341440","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":26005},"server":"https://android.clients.google.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13401533883127023","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwOi8vbG9jYWxob3N0",false,0],"network_stats":{"srtt":20144},"server":"https://www.gstatic.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13401533890949399","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwOi8vbG9jYWxob3N0",false,0],"network_stats":{"srtt":21512},"server":"https://fonts.gstatic.com","supports_spdy":true},{"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":31754},"server":"https://www.google.com"}],"supports_quic":{"address":"192.168.1.10","used_quic":true},"version":5},"network_qualities":{"CAESABiAgICA+P////8B":"4G","CAISABiAgICA+P////8B":"4G"}}}
{"net":{"http_server_properties":{"broken_alternative_services":[{"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"broken_count":2,"host":"android.clients.google.com","port":443,"protocol_str":"quic"}],"servers":[{"anonymization":["FAAAABAAAABodHRwczovL2d2dDEuY29t",false,0],"network_stats":{"srtt":25215},"server":"https://redirector.gvt1.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13401725062070298","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":40371},"server":"https://accounts.google.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13401725077617716","port":443,"protocol_str":"quic"}],"anonymization":["MAAAACsAAABodHRwczovL29wdGltaXphdGlvbmd1aWRlLXBhLmdvb2dsZWFwaXMuY29tAA==",false,0],"network_stats":{"srtt":20802},"server":"https://optimizationguide-pa.googleapis.com","supports_spdy":true},{"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"server":"https://android.clients.google.com","supports_spdy":true},{"anonymization":["FAAAABAAAABodHRwOi8vbG9jYWxob3N0",false,0],"server":"https://loctonelle.ch","supports_spdy":true},{"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":18776},"server":"https://www.google.com"},{"anonymization":["HAAAABUAAABodHRwczovL21pY3Jvc29mdC5jb20AAAA=",false,0],"server":"https://prod.rewardsplatform.microsoft.com","supports_spdy":true},{"anonymization":["LAAAACYAAABodHRwczovL2VkZ2Vhc3NldHNlcnZpY2UuYXp1cmVlZGdlLm5ldAAA",false,0],"server":"https://edgeassetservice.azureedge.net","supports_spdy":true},{"anonymization":["HAAAABUAAABodHRwczovL21pY3Jvc29mdC5jb20AAAA=",false,0],"server":"https://edge.microsoft.com","supports_spdy":true},{"anonymization":["GAAAABQAAABodHRwczovL2JpbmdhcGlzLmNvbQ==",false,0],"server":"https://www.bingapis.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13401732719744325","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwOi8vbG9jYWxob3N0",false,0],"network_stats":{"srtt":24263},"server":"https://www.gstatic.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13401732720997683","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL29mZmljZS5jb20AAA==",false,0],"network_stats":{"srtt":27434},"server":"https://substrate.office.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13401732725158080","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwOi8vbG9jYWxob3N0",false,0],"network_stats":{"srtt":21914},"server":"https://fonts.gstatic.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13399234327150864","port":443,"protocol_str":"quic"}],"anonymization":["FAAAABAAAABodHRwczovL2JpbmcuY29t",false,0],"network_stats":{"srtt":23197},"server":"https://www.bing.com","supports_spdy":true}],"supports_quic":{"address":"192.168.1.10","used_quic":true},"version":5},"network_qualities":{"CAESABiAgICA+P////8B":"4G","CAISABiAgICA+P////8B":"4G"}}}

View File

@@ -1 +1 @@
{"sts":[{"expiry":1786004283.096739,"host":"8/RrMmQlCD2Gsp14wUCE1P8r7B2C5+yE0+g79IPyRsc=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1754468283.09674}],"version":2}
{"sts":[{"expiry":1786203121.296911,"host":"PKqosHGXLFTwexcsjC+UXTkKV3GWWHwtzKz/ULb9ssM=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1754667121.296916},{"expiry":1786203120.9982,"host":"rmnekbKAq/dxKc3O5aFRkaYg4kOrb8ehfGdmdZ4sxZ0=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1754667120.998204},{"expiry":1770664373.013718,"host":"v72frEbnPsF5f2vKgwdmsdKWBgqMeQrpLqWnqxGv0Ws=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1754664373.013722},{"expiry":1786203120.694324,"host":"7tSAOAx10AkpkhAGpc2+WxFucu2Qg9/ypzW0ZDwcltE=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1754667120.694329},{"expiry":1786195462.070379,"host":"8/RrMmQlCD2Gsp14wUCE1P8r7B2C5+yE0+g79IPyRsc=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1754659462.070382}],"version":2}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +1,3 @@
2025/08/06-10:18:01.805 2dd4 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Service Worker\Database/MANIFEST-000001
2025/08/06-10:18:01.807 2dd4 Recovering log #3
2025/08/06-10:18:01.808 2dd4 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Service Worker\Database/000003.log
2025/08/08-17:31:58.306 39e0 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Service Worker\Database/MANIFEST-000001
2025/08/08-17:31:58.309 39e0 Recovering log #3
2025/08/08-17:31:58.309 39e0 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Service Worker\Database/000003.log

View File

@@ -1,3 +1,3 @@
2025/07/11-09:55:25.505 6e74 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Service Worker\Database/MANIFEST-000001
2025/07/11-09:55:25.519 6e74 Recovering log #3
2025/07/11-09:55:25.520 6e74 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Service Worker\Database/000003.log
2025/08/08-15:24:20.701 4d90 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Service Worker\Database/MANIFEST-000001
2025/08/08-15:24:20.703 4d90 Recovering log #3
2025/08/08-15:24:20.705 4d90 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Service Worker\Database/000003.log

View File

@@ -1,3 +1,3 @@
2025/08/06-10:18:01.925 9ec4 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Session Storage/MANIFEST-000001
2025/08/06-10:18:01.928 9ec4 Recovering log #3
2025/08/06-10:18:01.933 9ec4 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Session Storage/000003.log
2025/08/08-17:31:58.540 21f8 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Session Storage/MANIFEST-000001
2025/08/08-17:31:58.541 21f8 Recovering log #3
2025/08/08-17:31:58.543 21f8 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Session Storage/000003.log

View File

@@ -1,3 +1,3 @@
2025/07/11-09:55:25.642 60f8 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Session Storage/MANIFEST-000001
2025/07/11-09:55:25.651 60f8 Recovering log #3
2025/07/11-09:55:25.654 60f8 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Session Storage/000003.log
2025/08/08-15:24:20.852 6fbc Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Session Storage/MANIFEST-000001
2025/08/08-15:24:20.853 6fbc Recovering log #3
2025/08/08-15:24:20.857 6fbc Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Session Storage/000003.log

View File

@@ -1,3 +1,3 @@
2025/08/06-10:18:01.806 9088 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Site Characteristics Database/MANIFEST-000001
2025/08/06-10:18:01.808 9088 Recovering log #3
2025/08/06-10:18:01.808 9088 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Site Characteristics Database/000003.log
2025/08/08-17:31:58.310 221c Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Site Characteristics Database/MANIFEST-000001
2025/08/08-17:31:58.311 221c Recovering log #3
2025/08/08-17:31:58.311 221c Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Site Characteristics Database/000003.log

View File

@@ -1,3 +1,3 @@
2025/07/11-09:55:25.509 2850 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Site Characteristics Database/MANIFEST-000001
2025/07/11-09:55:25.518 2850 Recovering log #3
2025/07/11-09:55:25.518 2850 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Site Characteristics Database/000003.log
2025/08/08-15:24:20.703 30f4 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Site Characteristics Database/MANIFEST-000001
2025/08/08-15:24:20.706 30f4 Recovering log #3
2025/08/08-15:24:20.706 30f4 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Site Characteristics Database/000003.log

View File

@@ -1,3 +1,3 @@
2025/08/06-10:18:01.801 9a44 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Sync Data\LevelDB/MANIFEST-000001
2025/08/06-10:18:01.804 9a44 Recovering log #3
2025/08/06-10:18:01.805 9a44 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\Sync Data\LevelDB/000003.log
2025/08/08-17:31:58.299 8c8c Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Sync Data\LevelDB/MANIFEST-000001
2025/08/08-17:31:58.300 8c8c Recovering log #3
2025/08/08-17:31:58.301 8c8c Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\Sync Data\LevelDB/000003.log

View File

@@ -1,3 +1,3 @@
2025/07/11-09:55:25.501 3794 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Sync Data\LevelDB/MANIFEST-000001
2025/07/11-09:55:25.519 3794 Recovering log #3
2025/07/11-09:55:25.519 3794 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\Sync Data\LevelDB/000003.log
2025/08/08-15:24:20.699 a028 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Sync Data\LevelDB/MANIFEST-000001
2025/08/08-15:24:20.703 a028 Recovering log #3
2025/08/08-15:24:20.705 a028 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\Sync Data\LevelDB/000003.log

View File

@@ -1,8 +1,6 @@
2025/08/06-10:18:01.930 3e34 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\shared_proto_db/MANIFEST-000001
2025/08/06-10:18:01.931 3e34 Recovering log #7
2025/08/06-10:18:01.932 3e34 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\shared_proto_db/000007.log
2025/08/06-10:18:01.933 3e34 Delete type=0 #3
2025/08/06-10:18:01.933 3e34 Delete type=0 #4
2025/08/06-10:18:23.568 9a44 Level-0 table #11: started
2025/08/06-10:18:23.572 9a44 Level-0 table #11: 132849 bytes OK
2025/08/06-10:18:23.576 9a44 Delete type=0 #7
2025/08/08-17:31:58.557 5788 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\shared_proto_db/MANIFEST-000001
2025/08/08-17:31:58.558 5788 Recovering log #10
2025/08/08-17:31:58.559 5788 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\shared_proto_db/000010.log
2025/08/08-17:31:58.560 5788 Delete type=0 #3
2025/08/08-17:31:58.560 5788 Delete type=0 #4
2025/08/08-17:31:58.560 5788 Delete type=0 #7

View File

@@ -1,5 +1,6 @@
2025/07/11-09:55:25.644 2138 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\shared_proto_db/MANIFEST-000001
2025/07/11-09:55:25.644 2138 Recovering log #7
2025/07/11-09:55:25.646 2138 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\shared_proto_db/000007.log
2025/07/11-09:55:25.646 2138 Delete type=0 #3
2025/07/11-09:55:25.646 2138 Delete type=0 #4
2025/08/08-15:24:20.865 400c Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\shared_proto_db/MANIFEST-000001
2025/08/08-15:24:20.866 400c Recovering log #10
2025/08/08-15:24:20.866 400c Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\shared_proto_db/000010.log
2025/08/08-15:24:20.867 400c Delete type=0 #3
2025/08/08-15:24:20.867 400c Delete type=0 #4
2025/08/08-15:24:20.867 400c Delete type=0 #7

View File

@@ -1,3 +1,3 @@
2025/08/06-10:18:01.924 3e34 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\shared_proto_db\metadata/MANIFEST-000001
2025/08/06-10:18:01.925 3e34 Recovering log #3
2025/08/06-10:18:01.926 3e34 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.3b924264\flutter_tools_chrome_device.7457e81b\Default\shared_proto_db\metadata/000003.log
2025/08/08-17:31:58.552 5788 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\shared_proto_db\metadata/MANIFEST-000001
2025/08/08-17:31:58.552 5788 Recovering log #3
2025/08/08-17:31:58.553 5788 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.89cabe01\flutter_tools_chrome_device.13ec1659\Default\shared_proto_db\metadata/000003.log

View File

@@ -1,3 +1,3 @@
2025/07/11-09:55:25.639 2138 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\shared_proto_db\metadata/MANIFEST-000001
2025/07/11-09:55:25.640 2138 Recovering log #3
2025/07/11-09:55:25.640 2138 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.601fb116\flutter_tools_chrome_device.c3d1886e\Default\shared_proto_db\metadata/000003.log
2025/08/08-15:24:20.859 64b8 Reusing MANIFEST C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\shared_proto_db\metadata/MANIFEST-000001
2025/08/08-15:24:20.860 64b8 Recovering log #3
2025/08/08-15:24:20.861 64b8 Reusing old log C:\Users\Yael\AppData\Local\Temp\flutter_tools.ad1ef8a9\flutter_tools_chrome_device.d8bb94dc\Default\shared_proto_db\metadata/000003.log

View File

@@ -0,0 +1,478 @@
import 'package:flutter/material.dart';
class PostCardWidget extends StatelessWidget {
final String title;
final String content;
final String authorName;
final String authorImageUrl;
final DateTime publishDate;
final List<String>? imageUrls;
final int likesCount;
final int commentsCount;
final int sharesCount;
final VoidCallback? onLike;
final VoidCallback? onComment;
final VoidCallback? onShare;
const PostCardWidget({
Key? key,
required this.title,
required this.content,
required this.authorName,
required this.authorImageUrl,
required this.publishDate,
this.imageUrls,
this.likesCount = 0,
this.commentsCount = 0,
this.sharesCount = 0,
this.onLike,
this.onComment,
this.onShare,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Card(
margin: const EdgeInsets.only(bottom: 16.0),
//elevation: 2,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// En-tête avec auteur et date
Padding(
padding: const EdgeInsets.all(16.0),
child: Row(
children: [
// Photo de profil de l'auteur
CircleAvatar(
radius: 20,
backgroundImage: NetworkImage(authorImageUrl),
onBackgroundImageError: (_, __) {},
child: authorImageUrl.isEmpty
? const Icon(Icons.person, size: 20)
: null,
),
const SizedBox(width: 12),
// Nom et date
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
authorName,
style: Theme.of(context).textTheme.titleLarge?.copyWith(
fontWeight: FontWeight.w600,
color: Colors.white,
),
),
const SizedBox(height: 2),
Text(
_formatDate(publishDate),
style: Theme.of(context).textTheme.bodySmall?.copyWith(
color: Colors.grey,
),
),
],
),
),
// Menu options
IconButton(
icon: const Icon(Icons.more_vert, color: Colors.grey),
onPressed: () {
// Action pour le menu
},
),
],
),
),
// Contenu du post
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// Contenu
Text(
content,
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
color: Colors.white,
height: 1.4,
),
),
],
),
),
// Images avec boutons d'action si présentes
if (imageUrls != null && imageUrls!.isNotEmpty)
Container(
//margin: const EdgeInsets.symmetric(vertical: 12.0),
height: 200,
child: Stack(
children: [
// Images
PageView.builder(
itemCount: imageUrls!.length,
itemBuilder: (context, index) {
return Container(
//margin: const EdgeInsets.symmetric(horizontal: 16.0),
decoration: const BoxDecoration(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(0),
topRight: Radius.circular(0),
bottomLeft: Radius.circular(8),
bottomRight: Radius.circular(8),
),
),
child: ClipRRect(
borderRadius: const BorderRadius.only(
topLeft: Radius.circular(0),
topRight: Radius.circular(0),
bottomLeft: Radius.circular(8),
bottomRight: Radius.circular(8),
),
child: _buildImage(imageUrls![index]),
),
);
},
),
// Boutons d'action en overlay à droite
Positioned(
right: 24,
top: 0,
bottom: 0,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
_VerticalActionButton(
icon: Icons.favorite_outline,
count: likesCount,
onPressed: onLike,
),
const SizedBox(height: 16),
_VerticalActionButton(
icon: Icons.comment_outlined,
count: commentsCount,
onPressed: onComment,
),
const SizedBox(height: 16),
_VerticalActionButton(
icon: Icons.share_outlined,
count: sharesCount,
onPressed: onShare,
),
],
),
),
],
),
),
// Si pas d'image, boutons d'action en bas à droite
if (imageUrls == null || imageUrls!.isEmpty)
Padding(
padding: const EdgeInsets.symmetric(vertical: 2.0, horizontal: 16.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_HorizontalActionButton(
icon: Icons.favorite_outline,
count: likesCount,
onPressed: onLike,
),
const SizedBox(width: 16),
_HorizontalActionButton(
icon: Icons.comment_outlined,
count: commentsCount,
onPressed: onComment,
),
const SizedBox(width: 16),
_HorizontalActionButton(
icon: Icons.share_outlined,
count: sharesCount,
onPressed: onShare,
),
],
),
),
],
),
);
}
String _formatDate(DateTime date) {
final now = DateTime.now();
final difference = now.difference(date);
if (difference.inDays > 7) {
return '${date.day}/${date.month}/${date.year}';
} else if (difference.inDays > 0) {
return '${difference.inDays} jour${difference.inDays > 1 ? 's' : ''}';
} else if (difference.inHours > 0) {
return '${difference.inHours}h';
} else if (difference.inMinutes > 0) {
return '${difference.inMinutes}min';
} else {
return 'À l\'instant';
}
}
Widget _buildImage(String imageUrl) {
// Vérifie si c'est une image d'assets ou une URL réseau
if (imageUrl.startsWith('assets/')) {
return Image.asset(
imageUrl,
fit: BoxFit.cover,
errorBuilder: (context, error, stackTrace) {
print('Erreur de chargement d\'asset: $error');
return _buildErrorWidget();
},
);
} else {
return Image.network(
imageUrl,
fit: BoxFit.cover,
loadingBuilder: (context, child, loadingProgress) {
if (loadingProgress == null) return child;
return Container(
color: Colors.grey[300],
child: Center(
child: CircularProgressIndicator(
value: loadingProgress.expectedTotalBytes != null
? loadingProgress.cumulativeBytesLoaded /
loadingProgress.expectedTotalBytes!
: null,
),
),
);
},
errorBuilder: (context, error, stackTrace) {
print('Erreur de chargement d\'image réseau: $error');
return _buildErrorWidget();
},
);
}
}
Widget _buildErrorWidget() {
return Container(
color: Colors.grey[300],
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(
Icons.broken_image,
size: 50,
color: Colors.grey[600],
),
const SizedBox(height: 8),
Text(
'Image non disponible',
style: TextStyle(
color: Colors.grey[600],
fontSize: 12,
),
),
],
),
);
}
}
class _VerticalActionButton extends StatefulWidget {
final IconData icon;
final int? count;
final VoidCallback? onPressed;
const _VerticalActionButton({
required this.icon,
this.count,
this.onPressed,
});
@override
State<_VerticalActionButton> createState() => _VerticalActionButtonState();
}
class _VerticalActionButtonState extends State<_VerticalActionButton>
with SingleTickerProviderStateMixin {
late AnimationController _animationController;
late Animation<double> _scaleAnimation;
@override
void initState() {
super.initState();
_animationController = AnimationController(
duration: const Duration(milliseconds: 150),
vsync: this,
);
_scaleAnimation = Tween<double>(
begin: 1.0,
end: 0.85,
).animate(CurvedAnimation(
parent: _animationController,
curve: Curves.easeInOut,
));
}
@override
void dispose() {
_animationController.dispose();
super.dispose();
}
void _handleTap() async {
await _animationController.forward();
await _animationController.reverse();
widget.onPressed?.call();
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: _handleTap,
child: AnimatedBuilder(
animation: _scaleAnimation,
builder: (context, child) {
return Transform.scale(
scale: _scaleAnimation.value,
child: Container(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Container(
padding: const EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Colors.black.withOpacity(0.6),
borderRadius: BorderRadius.circular(20),
),
child: Icon(
widget.icon,
size: 24,
color: Colors.white,
),
),
if (widget.count != null && widget.count! > 0) ...[
const SizedBox(height: 4),
Text(
widget.count! > 999 ? '999+' : '${widget.count}',
style: const TextStyle(
color: Colors.white,
fontSize: 12,
fontWeight: FontWeight.bold,
),
),
],
],
),
),
);
},
),
);
}
}
class _HorizontalActionButton extends StatefulWidget {
final IconData icon;
final int? count;
final VoidCallback? onPressed;
const _HorizontalActionButton({
required this.icon,
this.count,
this.onPressed,
});
@override
State<_HorizontalActionButton> createState() => _HorizontalActionButtonState();
}
class _HorizontalActionButtonState extends State<_HorizontalActionButton>
with SingleTickerProviderStateMixin {
late AnimationController _animationController;
late Animation<double> _scaleAnimation;
@override
void initState() {
super.initState();
_animationController = AnimationController(
duration: const Duration(milliseconds: 150),
vsync: this,
);
_scaleAnimation = Tween<double>(
begin: 1.0,
end: 0.85,
).animate(CurvedAnimation(
parent: _animationController,
curve: Curves.easeInOut,
));
}
@override
void dispose() {
_animationController.dispose();
super.dispose();
}
void _handleTap() async {
await _animationController.forward();
await _animationController.reverse();
widget.onPressed?.call();
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: _handleTap,
child: AnimatedBuilder(
animation: _scaleAnimation,
builder: (context, child) {
return Transform.scale(
scale: _scaleAnimation.value,
child: Container(
padding: const EdgeInsets.symmetric(horizontal: 12.0, vertical: 8.0),
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Container(
padding: const EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Colors.grey[100],
borderRadius: BorderRadius.circular(20),
),
child: Icon(
widget.icon,
size: 20,
color: Colors.grey[900],
),
),
if (widget.count != null && widget.count! > 0) ...[
const SizedBox(height: 4),
Text(
widget.count! > 999 ? '999+' : '${widget.count}',
style: TextStyle(
color: Colors.grey[100],
fontSize: 12,
fontWeight: FontWeight.w500,
),
),
],
],
),
),
);
},
),
);
}
}

View File

@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:stacked/stacked.dart';
import 'event_details_viewmodel.dart';
import '../../common/post_card_widget.dart';
class EventDetailsView extends StackedView<EventDetailsViewModel> {
final int eventId;
@@ -203,13 +204,28 @@ class EventDetailsView extends StackedView<EventDetailsViewModel> {
child: viewModel.selectedTabIndex == 0
? Column(
mainAxisSize: MainAxisSize.min,
children: List.generate(50, (index) {
return Card(
margin: const EdgeInsets.only(bottom: 8.0),
child: ListTile(
title: Text('Publication ${index + 1}'),
subtitle: Text('Description de la publication ${index + 1}'),
),
children: List.generate(10, (index) {
return PostCardWidget(
title: 'Publication ${index + 1}',
content: 'Voici le contenu de la publication ${index + 1}. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
authorName: 'L\'Octonelle',
authorImageUrl: '', // URL vide pour utiliser l'icône par défaut
publishDate: DateTime.now().subtract(Duration(days: index)),
imageUrls: index % 3 == 0 ? ['assets/images/Affiche.jpg'] : null,
likesCount: (index + 1) * 5,
commentsCount: (index + 1) * 2,
onLike: () {
// Action lors du clic sur "J'aime"
print('Like publication ${index + 1}');
},
onComment: () {
// Action lors du clic sur "Commenter"
print('Comment publication ${index + 1}');
},
onShare: () {
// Action lors du clic sur "Partager"
print('Share publication ${index + 1}');
},
);
}),
)

View File

@@ -10,3 +10,15 @@ class EventDetailsViewModel extends BaseViewModel {
notifyListeners();
}
}
class Post {
final String id;
final String title;
final String content;
Post({
required this.id,
required this.title,
required this.content,
});
}