Compare commits

...

272 Commits

Author SHA1 Message Date
Andrea Busi 20972dd799 release: Increase version for release 2021-04-16 14:15:21 +02:00
Andrea Busi fe0429e68d fix: Update wrong localisation for countries 2021-04-16 14:15:21 +02:00
Andrea Busi 38968a8f89 fix: Properly reset map in alert notification 2021-04-16 14:13:47 +02:00
Andrea Busi 805f033495 chore: Update push payload for different countries 2021-04-16 14:13:47 +02:00
Andrea Busi 8d54357897 dependency: Update Pods 2021-04-15 13:24:14 +02:00
Andrea Busi c9f8bc25a6 feat: Add translations also for InfoPlist strings 2021-04-15 13:22:51 +02:00
Andrea Busi 24882b702f fix: Minor UI fixes 2021-04-15 13:22:51 +02:00
Andrea Busi d4549792a8 feat: Add new languages: EL, FR, HR, TR, ID 2021-04-15 12:45:05 +02:00
Andrea Busi c0d4778d06 refactor: Remove unused localisation file in notification content extension 2021-04-15 12:45:05 +02:00
Andrea Busi 32c5b28d45 refactor: Remove localisation for LaunchScreen file 2021-04-15 12:45:05 +02:00
Andrea Busi d0dd99a194 feat: Add France, Greece and Croatia as network providers 2021-04-15 12:45:05 +02:00
Andrea Busi cd169696be refactor: Align existing string to Android app 2021-04-15 07:31:06 +02:00
Andrea Busi 71f4331551 release: Increase version for release 2021-04-13 07:12:54 +02:00
Andrea Busi b3db82dbc4 refactor: Change Gray color to #AAAAAA 2021-04-13 07:12:54 +02:00
Andrea Busi 67cd9b7ab7 fix: Minor fixes 2021-04-13 07:12:54 +02:00
Andrea Busi 18d653da05 release: Increase version for release 2021-04-11 17:34:34 +02:00
Andrea Busi 108916af37 refactor: Rename EQNFiltroMappa in EQNBaseMapFilter 2021-04-11 17:34:34 +02:00
Andrea Busi bf0d733776 refactor: Cleanup some constants 2021-04-11 17:34:34 +02:00
Andrea Busi 926af27ffd refactor: Add missing translations from Android app 2021-04-11 17:34:34 +02:00
Andrea Busi 0504cdbea4 refactor: Complete strings alignment 2021-04-09 09:41:13 +02:00
Andrea Busi 8085afea4f refactor: Align strings with Android app 2021-04-06 22:07:44 +02:00
Andrea Busi c3123f8d33 refactor: Some strings alignment 2021-04-05 21:12:46 +02:00
Andrea Busi 943f9e75cf refactor: Remove no longer used Storyboard localization files 2021-04-05 21:00:34 +02:00
Andrea Busi 10e7f5ad9d refactor: Move strings from Storyboard to code and align with Android strings 2021-04-05 20:58:54 +02:00
Andrea Busi 660d710e20 refactor: Move strings from Storyboard to code and align with Android strings 2021-04-05 19:55:16 +02:00
Andrea Busi 97d805b71b refactor: Move strings from Storyboard to code and align with Android strings 2021-04-05 11:13:52 +02:00
Andrea Busi b3dbd71f0e refactor: Move some strings from storyboard to code 2021-04-04 11:26:50 +02:00
Andrea Busi 6f75fe14e7 refactor: Cleanup some strings 2021-04-04 10:59:03 +02:00
Andrea Busi b9e2e09be7 fix: Don't return nil color to avoid strange UI behaviour 2021-03-27 17:50:10 +01:00
Andrea Busi 5dc64c4f77 refactor: Add extension to Dictionary to simplify values retrieve 2021-03-27 17:49:47 +01:00
Andrea Busi f437c3cde6 release: Increase version for release 2021-03-27 15:28:15 +01:00
Andrea Busi f197ff8ac9 fix: Use now as default date if parse failes 2021-03-27 15:26:45 +01:00
Andrea Busi 0687cc03a5 fix: Remove unexpected char from strings, that cause some random crashes in ES 2021-03-27 15:13:14 +01:00
Andrea Busi fa69edaa26 fix: Prevent crash for nil values 2021-03-27 15:08:50 +01:00
Andrea Busi 783a1a5cb4 release: Increase version for release 2021-03-24 20:31:00 +01:00
Andrea Busi a746a70860 dependency: Update Pods 2021-03-24 20:31:00 +01:00
Andrea Busi 4cb0bc8288 fix: Solve non working twice tap on an annotation 2021-03-24 20:23:20 +01:00
Andrea Busi 45f19a7533 feat: Add circles in map detail 2021-03-24 20:23:20 +01:00
Andrea Busi f7eeef58df refactor: Minor code and UI improvements 2021-03-23 19:12:39 +01:00
Andrea Busi 88c0cda3a4 chore: Regenerate provisioning profiles without unused capabilities 2021-03-23 19:12:39 +01:00
Andrea Busi ae247a1695 feat: Allows to change filters from map detail (seismic network) 2021-03-23 19:12:39 +01:00
Andrea Busi 87c5444a37 refactor: Move filters in a dedicated folder and make controller conforms to StoryboardInitializable 2021-03-23 19:12:39 +01:00
Andrea Busi 6ed4500c4b fix: Solve non working subscription button in simulator 2021-03-23 19:12:39 +01:00
Andrea Busi 7e4d9c89bb feat: Add new setting to enable/disable critical alerts
Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/31
2021-03-23 19:12:39 +01:00
Andrea Busi a467646cac chore: Add AppGroup and recreate identifiers (and provisionings) for extensions 2021-03-23 19:12:39 +01:00
Andrea Busi 05f6592b81 refactor: Use new icons in notification extension 2021-03-23 19:12:39 +01:00
Andrea Busi b52e050dd6 refactor: Use new icons in app 2021-03-23 19:12:39 +01:00
Andrea Busi 10eaee71f8 release: Increase version for release 2021-03-23 19:12:39 +01:00
Andrea Busi f953d5fdb4 refactor: Various UI improvements
Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/37
2021-03-23 19:12:39 +01:00
Andrea Busi 5e61c126aa release: Increase version for release 2021-03-18 19:09:02 +01:00
Andrea Busi 1e17ad257a feat: Recreate seismic networks map with new logic and aligned with Android app
Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/36
2021-03-18 18:54:34 +01:00
Andrea Busi 2cbb4cd526 refactor: Edit custom annotation view to support a 2 labels layout 2021-03-15 16:40:16 +01:00
Andrea Busi b5525eda01 refactor: Create a viewmodel for a seismic, to share logic 2021-03-15 16:40:16 +01:00
Andrea Busi 699bf1c159 release: Increase version for release 2021-03-15 14:42:56 +01:00
Andrea Busi 1a28b6389f feat: Add new logic to set the initial filter 2021-03-15 14:42:14 +01:00
Andrea Busi cc38943d05 refactor: Move map center to superclass 2021-03-14 15:12:16 +01:00
Andrea Busi eae914681d fix: Calculate proper offset for custom annotation 2021-03-14 15:12:16 +01:00
Andrea Busi c6c9461667 feat: Add circles around newest pastquake on the map 2021-03-14 15:12:16 +01:00
Andrea Busi 0fb0882666 feat: Display extra informations when tap on an annotation 2021-03-14 15:12:16 +01:00
Andrea Busi 4ff2b75121 refactor: Create an enum for pastquake intensities 2021-03-14 15:12:16 +01:00
Andrea Busi 6b6f189eda refactor: Align some strings with Android 2021-03-14 15:12:16 +01:00
Andrea Busi 9e863ad6ca refactor: Move date formatter to utils 2021-03-14 15:12:16 +01:00
Andrea Busi c00a29a222 refactor: Improve style and code for log controller 2021-03-11 20:23:18 +01:00
Andrea Busi e9b0343be7 refactor: Update star icons with better ones 2021-03-11 20:05:35 +01:00
Andrea Busi cca042ca61 refactor: Use new annotation models also in notification extension 2021-03-11 20:05:35 +01:00
Andrea Busi 5ab5309838 feat: Recreate pastquakes map with new logic and aligned with Android app
Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/35
2021-03-11 20:05:35 +01:00
Andrea Busi c997c5d5a3 refactor: Improve models for Pasquakes 2021-03-10 21:28:37 +01:00
Andrea Busi 50c3937676 release: Increase version for release 2021-03-10 21:28:16 +01:00
Andrea Busi 23c7069660 fix: Solve typo in constant 2021-03-10 21:28:16 +01:00
Andrea Busi f08a4b47aa refactor: Who needs a utility method to filter an array? 2021-03-10 21:28:16 +01:00
Andrea Busi 897d726ee9 refactor: Use blurred button in simulator map 2021-03-10 21:28:16 +01:00
Andrea Busi 3898eb3de2 feat: Recreate mappa segnalazioni with new logic and aligned with Android app
Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/34
2021-03-10 21:28:16 +01:00
Andrea Busi d3a8e410d0 refactor: Seismic map detail now inherit from new base map controller 2021-03-10 21:28:16 +01:00
Andrea Busi 4713dd78b3 feat: Add base map controller to handle shared map logics 2021-03-10 21:28:16 +01:00
Andrea Busi 05a187b7ec feat: Add blurred close button 2021-03-08 21:25:03 +01:00
Andrea Busi 8465350a67 refactor: Improve EQNSegnalazione model 2021-03-06 17:25:27 +01:00
Andrea Busi 5def7e15a9 refactor: Improve Swift interoperability 2021-03-06 17:25:27 +01:00
Andrea Busi 1531d2851e refactor: Rename some enum to be more Swift friendly 2021-03-06 17:25:27 +01:00
Andrea Busi 14c2464549 release: Increase version for release 2021-03-02 19:29:10 +01:00
Andrea Busi 0070f6761e chore: Add push paylod sample 2021-03-02 19:29:10 +01:00
Andrea Busi 9166fcc59b feat: Handle critical notifications in payload extension, due to FCM legacy api limitation 2021-03-02 19:29:10 +01:00
Andrea Busi e806d1caf0 feat: Ask for critical alerts permission 2021-02-28 10:21:49 +01:00
Andrea Busi f71cd9c8bc feat: Add critical alerts entitlement 2021-02-28 10:21:49 +01:00
Andrea Busi 37acb767de chore: Update provisioning profiles with critical alerts entitlement 2021-02-28 10:21:49 +01:00
Andrea Busi 05dd10fa23 fix: Remove wrong references in Notification Content extension 2021-02-28 10:21:34 +01:00
Andrea Busi 25c2a7374d feat: Add debug page (5 taps on settings tab bar item) 2021-02-28 10:21:34 +01:00
Andrea Busi d523bbf626 feat: Store push token 2021-02-28 10:21:34 +01:00
Andrea Busi 23cb35c71c refactor: Improve names for user constants 2021-02-28 10:21:32 +01:00
Andrea Busi 44d01ecc20 release: Increase version for release 2021-02-27 23:05:20 +01:00
Andrea Busi e43e187d84 refactor: Disable shake in subscriptions 2021-02-27 23:05:20 +01:00
Andrea Busi 849170cd2b fix: Properly hide banner 2021-02-27 22:55:36 +01:00
Andrea Busi d36b07cbd4 feat: Add countdown also in home alert cell 2021-02-27 21:05:42 +01:00
Andrea Busi ceeb999b7f fix: Show proper distance in simulator cell
Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/33
2021-02-27 18:10:04 +01:00
Andrea Busi 51c4e15c57 fix: Solve crash during initial setup 2021-02-27 17:12:56 +01:00
Andrea Busi 67b266ae0e release: Increase version for release 2021-02-25 19:48:19 +01:00
Andrea Busi 6f2866a202 fix: Force server registration when Firebase token is received 2021-02-25 19:47:20 +01:00
Andrea Busi dfa6e960da refactor: Avoid self usage in init method to avoid concurrency issues 2021-02-25 19:47:20 +01:00
Andrea Busi ff2f6e1e5a release: Increase version for release 2021-02-25 19:47:20 +01:00
Andrea Busi c10000df53 fix: Retry server registration if fails
Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/30
2021-02-24 21:05:50 +01:00
Andrea Busi 6e6f1bed17 feat: Use native ads in seismics section
Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/22
2021-02-21 20:56:12 +01:00
Andrea Busi c77a31e322 refactor: Remove no longer used EQNAdsUtility class 2021-02-21 20:56:12 +01:00
Andrea Busi 47db205135 refactor: Use adaptive banners in maps
Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/22
2021-02-21 20:56:05 +01:00
Andrea Busi 5ab30c139f refactor: Rename ReteSismicaAnnotation in EQNMapAnnotationSeismicNetwork 2021-02-21 20:56:05 +01:00
Andrea Busi 852e950428 refactor: Rename PastquakesAnnotation in EQNMapAnnotationPastquakes 2021-02-21 20:56:05 +01:00
Andrea Busi e882a83694 refactor: Rewrite seismic map in Swift and rename its annotation model 2021-02-21 20:56:05 +01:00
Andrea Busi 0d26e641d7 refactor: Improve NSNotification definition to be Swift friendly 2021-02-21 20:56:05 +01:00
Andrea Busi 4c6a07c9d0 refactor: Use adaptive banners in main controllers
Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/22
2021-02-21 20:55:51 +01:00
Andrea Busi fe38921f23 fix: Use test ads during debug 2021-02-21 20:54:12 +01:00
Andrea Busi 118991feea dependency: Add missing SKAdNetworkItems in info.plist for GoogleMobileAds 2021-02-21 20:52:07 +01:00
Andrea Busi a87750f380 dependency: Add -ObjC flag to let GoogleMobileAds works 2021-02-21 20:52:07 +01:00
Andrea Busi cb8ee2cb67 dependency: Update Pods 2021-02-21 20:52:07 +01:00
Andrea Busi 787cd8b4e7 refactor: Rename some constants 2021-02-21 20:51:28 +01:00
Andrea Busi 64ec53e6f8 refactor: Remove unused method to validate app receipt 2021-02-21 20:50:55 +01:00
Andrea Busi 2df5342da2 chore: Remove old xcuserdata from versioning 2020-12-18 22:00:26 +01:00
Andrea Busi d8fdba5e4f release: Increase version for release 2020-12-08 16:20:10 +01:00
Andrea Busi a05e186275 refactor: Rewrite EQNReteSmartphone model in Swift and use proper types for properties 2020-12-08 16:20:10 +01:00
Andrea Busi 7730da5faa dependency: Update Pods 2020-12-07 09:57:27 +01:00
Andrea Busi 9844dc9ac2 fix: Add missing return 2020-12-07 09:57:27 +01:00
Andrea Busi a9f16bca4a refactor: Reorganise code related to background monitoring
- Move to Models folder
- Improve code and nullability notation
- Rename class with typo in name
2020-12-07 09:46:43 +01:00
Andrea Busi 5612768d7f refactor: Remove useless imports 2020-12-07 09:46:43 +01:00
Andrea Busi ad1487afdf feat: Add server request to register in-app purchase
Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/29
2020-12-07 09:46:24 +01:00
Andrea Busi f707186dea refactor: Show restored product in alert 2020-12-02 21:16:10 +01:00
Andrea Busi 24f63c7d4b feat: Add message if no subscriptions are available to restore 2020-12-02 21:16:10 +01:00
Andrea Busi 9678040d51 refactor: Improve log in in-app purchase manager 2020-12-02 21:16:10 +01:00
Andrea Busi 27dc1d8ff5 release: Increase version for release 2020-11-21 15:50:37 +01:00
Andrea Busi 4a0fe9ed09 refactor: Remove unused constants 2020-11-21 15:50:37 +01:00
Andrea Busi b382b70aa9 refactor: Reorganize some code 2020-11-21 15:50:37 +01:00
Andrea Busi 024a7c6333 feat: Add button to open subscriptions page from simulator result 2020-11-21 15:50:37 +01:00
Andrea Busi c9b4ef1aa5 feat: Add protocol to create controllers from storyboard 2020-11-21 15:50:37 +01:00
Andrea Busi f30ab9e009 refactor: Remove unused strings 2020-11-21 15:50:37 +01:00
Andrea Busi e15b7bcca2 feat: Add simulator function 2020-11-15 15:44:34 +01:00
Andrea Busi 90426c21f1 fix: Solve an issue with home layout 2020-11-15 15:44:15 +01:00
Andrea Busi 2ab07b7010 feat: Add methods to check enabled subscriptions 2020-11-15 15:44:15 +01:00
Andrea Busi be8fd7f4b5 refactor: Rewrite enum to be more Obj-C 2020-11-15 15:44:15 +01:00
Andrea Busi 4bf972747f dependency: Update Pods 2020-11-15 15:44:15 +01:00
Andrea Busi 96567c19f5 refactor: Remove unused GoogleMaps and GooglePlaces dependencies 2020-11-15 15:44:15 +01:00
Andrea Busi 82d5bd6b0d refactor: Remove some unused strings and remove extra escaping 2020-11-15 15:44:15 +01:00
Andrea Busi 889dd5e179 refactor: Improve code style 2020-11-14 17:46:39 +01:00
Andrea Busi bd8aba6992 refactor: Improve imports 2020-11-14 17:46:39 +01:00
Andrea Busi 017af0ed8e refactor: Add folder for "segnalazioni" controller 2020-11-14 15:08:23 +01:00
Andrea Busi 4f4d8dac52 fix: Add missing translation 2020-10-26 06:46:56 +01:00
Andrea Busi 122cf497b3 release: Increase version for release 2020-10-16 18:28:51 +02:00
Andrea Busi 361b51a5a2 fix: Use proper value when creating url for test alert 2020-10-16 18:28:51 +02:00
Andrea Busi bbfd28c5d2 dependency: Update Pods 2020-10-15 11:51:46 +02:00
Andrea Busi e399c53de1 feat: Add countdown inside notification content
Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/28
2020-10-15 11:47:54 +02:00
Andrea Busi d8c0d48ad2 refactor: Improve notification content layout and cleanup code 2020-10-15 08:40:03 +02:00
Andrea Busi a474d5782f refactor: Improve style and comments for EQNUtility class 2020-10-15 08:40:03 +02:00
Andrea Busi c538ca7dcb refactor: Move ads utility in a dedicated class 2020-10-15 08:40:03 +02:00
Andrea Busi b11af3d138 fix: Explicit import StoreKit 2020-10-15 08:40:02 +02:00
Andrea Busi 8e1b1bd5a7 refactor: Remove not yet used sounds 2020-10-13 11:23:38 +02:00
Andrea Busi 67546801ac release: Increase version for release 2020-10-13 08:08:48 +02:00
Andrea Busi 6135e2d38c refactor: Rename some constants 2020-10-13 08:08:48 +02:00
Andrea Busi e46fa0417d refactor: Update notification sound and remove not yet used setting parameter 2020-10-13 08:08:48 +02:00
Andrea Busi dc6bb13960 refactor: Load notification icons from current bundle, instead of download every time from the server 2020-10-13 08:08:48 +02:00
Andrea Busi 6aecff1415 fix: Play notification sound also with app in foreground 2020-10-12 21:10:07 +02:00
Andrea Busi 6fcf58608f refactor: Remove notification logic related to tsunami 2020-10-12 21:10:07 +02:00
Andrea Busi 65ed82445b fix: Solve issue that cause 30 seconds delay to display push notifications
Also apply some refactor to improve code style
2020-10-12 21:10:07 +02:00
Andrea Busi ab727b119b fix: Disable zoom in map 2020-10-12 21:10:07 +02:00
Andrea Busi 1bd833093b refactor: Hide "Simulator" button in home 2020-10-12 21:10:07 +02:00
Andrea Busi 904d4c5de8 refactor: Change text when seismic table is empty 2020-10-12 21:10:07 +02:00
Andrea Busi 720d0fcd2a fix: Disable selection for "location data" cell 2020-10-11 16:28:13 +02:00
Andrea Busi 8f50ed0a25 fix: Use M0_0 endpoint to retrieve data if show near earthquake is enabled 2020-10-11 16:28:13 +02:00
Andrea Busi 4f3bd9aa95 refactor: Align seismic cards style to new app layout 2020-10-08 22:18:51 +02:00
Andrea Busi cb30995a07 feat: Add location data card in Allerte section 2020-10-08 22:18:51 +02:00
Andrea Busi faeb9c0788 dependency: Add Solar library 2020-10-08 22:18:51 +02:00
Andrea Busi d286909a8d refactor: Move method to get string from coordinate in EQNUtility class 2020-10-08 22:18:51 +02:00
Andrea Busi 499d689943 refactor: Minor layout fixes 2020-10-08 21:36:28 +02:00
Andrea Busi 89e7989abc feat: Add shadow and rounded corner to cards 2020-10-08 21:36:28 +02:00
Andrea Busi bf4a5e7728 feat: Add test push alert feature 2020-10-08 21:36:28 +02:00
Andrea Busi e1bd26db48 refactor: Use proper method to store/load also dictionary 2020-10-08 21:36:28 +02:00
Andrea Busi 509b75e7b5 refactor: Use a shared method to handle push notification 2020-10-08 21:36:28 +02:00
Andrea Busi 5e16909f12 refactor: Remove old strings for storyboard 2020-10-08 21:36:28 +02:00
Andrea Busi 53817ac52a refactor: Remove unused images 2020-10-08 21:36:28 +02:00
Andrea Busi 54c6297637 refactor: Use new method to get formatted time difference 2020-10-08 21:36:28 +02:00
Andrea Busi 0374a0a1bd refactor: Improve notification management 2020-10-08 21:36:28 +02:00
Andrea Busi cf7ae31eb1 refactor: Better model PastquakesAnnotation 2020-10-08 21:36:28 +02:00
Andrea Busi 92e75913ab refactor: Recreate layout for "Allerte" section 2020-10-08 21:36:28 +02:00
Andrea Busi 061c321c2b refactor: Rename ReteSmartphone controller to AllerteViewController 2020-10-08 21:36:28 +02:00
Andrea Busi d50104a2f9 refactor: Improve layout in tab Segnalazioni 2020-10-08 21:36:28 +02:00
Andrea Busi 81d554cc78 refactor: Remove grafico utenti call and model
Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/26
2020-10-08 21:36:28 +02:00
Andrea Busi bda81d01ba refactor: Handle refresh for common notifications in base controller 2020-10-08 21:36:28 +02:00
Andrea Busi 708e6dd92f feat: Add cache mechanism for seismic data
- download data only after 2 minutes after the previous download
- download data when app returns from the background
- user can force data download

Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/18
2020-10-08 21:36:28 +02:00
Andrea Busi 74d7c71ed4 refactor: Improve code and use new utility method 2020-10-08 21:36:28 +02:00
Andrea Busi 27503c1643 refactor: Add new method to store/retrieve an array from NSUserDefault
This method uses only supported API, in order to solve deprecated warnings. Also, remove useless method
2020-10-08 21:36:28 +02:00
Andrea Busi 95935dd377 refactor: Remove commented code 2020-10-08 21:36:28 +02:00
Andrea Busi b357039901 refactor: Remove unused constants 2020-10-08 21:36:28 +02:00
Andrea Busi df8c154848 refactor: Remove AppTransportSecurity exception, only HTTPS are made from the app 2020-10-08 21:36:27 +02:00
Andrea Busi 882e0ba4b6 refactor: Remove not yet used strings 2020-10-08 21:36:27 +02:00
Andrea Busi 88572c2829 refactor: Use HTTPS endpoint to download notification icons 2020-10-08 21:36:27 +02:00
Andrea Busi bad1ce5879 refactor: Convert from Macro to static constants and use HTTPS as default protocol
Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/17
2020-10-08 21:36:27 +02:00
Andrea Busi ce387912f8 feat: Add method to get formatted time difference 2020-10-08 21:36:27 +02:00
Andrea Busi 8f711b988a release: Increase version for release 2020-10-08 14:22:26 +02:00
Andrea Busi e202ba8452 fix: Solve wrong url for settings upload 2020-10-08 14:21:49 +02:00
Andrea Busi eb8d8be800 fix: Make provider label fit required space 2020-10-08 14:01:52 +02:00
Andrea Busi a1b7a5ee70 fix: Seismic filter now use case-insensitive check for networks 2020-10-08 14:01:36 +02:00
Andrea Busi 7a117097e3 fix: Add missing translations 2020-10-08 14:01:24 +02:00
Andrea Busi 8070262a44 fix: Use proper time zone when parse web service date 2020-10-08 14:00:53 +02:00
Andrea Busi f768b15916 release: Increase version for release 2020-10-03 12:10:24 +02:00
Andrea Busi a07480f90a fix: Handle seismic date as nullable parameter to avoid crashes 2020-10-03 12:09:47 +02:00
Andrea Busi 4e5e93e3f1 refactor: Rename method to convert server string into date 2020-10-03 12:09:31 +02:00
Andrea Busi 68c9eb9bbc feat: Show alert when weather data are not available 2020-10-03 12:09:06 +02:00
Andrea Busi ba2fbfaa60 feat: Handle weather code as nullable parameter 2020-10-03 12:01:17 +02:00
Andrea Busi e194731bc8 refactor: Rename NSDictionary extension and improve code 2020-10-03 11:58:15 +02:00
Andrea Busi 928793b755 release: Increase version for release 2020-10-01 19:19:23 +02:00
Andrea Busi 3d7a0ad9f6 refactor: Remove initial loading controller 2020-10-01 19:19:23 +02:00
Andrea Busi 00a54dede1 feat: Show country selection on first app start 2020-10-01 19:19:23 +02:00
Andrea Busi 76861163a3 fix: Use proper formatter for decimal values 2020-10-01 19:19:23 +02:00
Andrea Busi 8ba2f8cea6 fix: Use https for new settings endpoint 2020-10-01 13:04:13 +02:00
Andrea Busi bcfadc7f3e fix: Fix crash due to wrong ES string 2020-10-01 13:04:13 +02:00
Andrea Busi e830e2eeb5 dependency: Update Pods 2020-09-30 15:59:12 +02:00
Andrea Busi e37ea4757d feat: Add icons for new seismic networks 2020-09-30 13:07:10 +02:00
Andrea Busi 5504160db6 feat: Add text when share seismic card 2020-09-30 12:58:13 +02:00
Andrea Busi 0dddb1c69b refactor: Improve code style 2020-09-30 12:58:13 +02:00
Andrea Busi 9c70f0a6d6 fix: Try to solve crazy crash 2020-09-30 12:58:13 +02:00
Andrea Busi d6d3ee8682 fix: Solve crash when reload table with already expanded cells 2020-09-30 12:58:13 +02:00
Andrea Busi 397e1c6e24 fix: Use proper translation 2020-09-28 10:52:48 +02:00
Andrea Busi 2b304cd7aa feat: Improve country picker selection 2020-09-28 10:26:33 +02:00
Andrea Busi 88c1c5aa16 feat: Update notification settings when user select a country 2020-09-27 17:28:18 +02:00
Andrea Busi 7a9206b15a feat: Add new seismic networks
Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/20
2020-09-27 17:28:18 +02:00
Andrea Busi ee7596644b refactor: Use new endpoint to save settings value and remove no longer needed settings
Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/20
2020-09-27 17:28:17 +02:00
Andrea Busi 85191d228e fix: Save missing value for raggio sismi forti setting 2020-09-27 17:28:17 +02:00
Andrea Busi b3f099efd8 refactor: Move default settings save in dedicated methods 2020-09-27 17:28:17 +02:00
Andrea Busi e11c5f8f19 refactor: Remove unused enum 2020-09-27 14:02:43 +02:00
Andrea Busi bbcf67d7cc fix: Update some missing translations 2020-09-27 14:02:43 +02:00
Andrea Busi 89193b61ce fix: Minor layout fixes 2020-09-27 14:02:43 +02:00
Andrea Busi d5993d01bf feat: Add message for empty seismic table 2020-09-26 18:31:00 +02:00
Andrea Busi 3b379a5da1 dependency: Add DZNEmptyDataSet 2020-09-26 18:31:00 +02:00
Andrea Busi 7013b868b2 fix: Use proper zoom on seismic map 2020-09-26 18:31:00 +02:00
Andrea Busi 211de82031 feat: Add "expande/collapse" to show/hide buttons in seismic cards
Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/21
2020-09-26 18:31:00 +02:00
Andrea Busi e8b5f742d1 feat: Open map detail when tap on map in cell 2020-09-26 18:31:00 +02:00
Andrea Busi 0731a1e134 fix: Update seismic networks
Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/21
2020-09-26 18:31:00 +02:00
Andrea Busi 1dc71ca8df refactor: Remove duplicated strings 2020-09-26 16:23:58 +02:00
Andrea Busi ea275e46b9 feat: Add command to set default settings 2020-09-26 14:28:11 +02:00
Andrea Busi de1912ea99 refactor: Add missing translations 2020-09-26 14:28:11 +02:00
Andrea Busi 4ec735ac9e fix: Add missing translations for previous release 2020-09-26 14:28:11 +02:00
Andrea Busi c15aeb0e3a feat: Add card settings 2020-09-26 14:08:32 +02:00
Andrea Busi 3b5e8e395f refactor: Remove old sesmic layout and controller 2020-09-26 14:08:32 +02:00
Andrea Busi 672982d7d5 feat: Add missing logic in new seismic controller 2020-09-26 14:08:32 +02:00
Andrea Busi 2ee413d9c8 feat: Add feature to save seismic event in calendar 2020-09-26 14:08:23 +02:00
Andrea Busi 39a10b2cbc feat: New beautifult layout for seismic cards 2020-09-26 14:08:23 +02:00
Andrea Busi 0eb0880b0e refactor: Improve code in EQMaccelerometroManager class 2020-09-25 22:15:15 +02:00
Andrea Busi 73c8ce1094 refactor: Move background fetch directly in the AppDelegate 2020-09-25 13:30:30 +02:00
Andrea Busi 4bb4815cd1 refactor: Better ServerRequest class
- Remove dead code
- Always call completion when handle the request
- Remove crazy checks when handle responses
2020-09-25 13:30:30 +02:00
Andrea Busi 1501b88a02 refactor: Improve EQNSisma model in order to use proper data types 2020-09-24 10:43:28 +02:00
Andrea Busi cd94302e00 release: Increase version for release 2020-09-24 10:26:55 +02:00
Andrea Busi eed5f6ae28 refactor: Convert constants from macro to static const (and use https) 2020-09-24 10:26:55 +02:00
Andrea Busi d29621492a fix: Force data download if magnitude filter change 2020-09-24 10:26:55 +02:00
Andrea Busi e56919d279 feat: Add different seismic endpoints based on the magnitude filter
Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/15
2020-09-24 10:26:55 +02:00
Andrea Busi 28f31979bb refactor: Remove not yet used Tsunami model 2020-09-24 10:26:55 +02:00
Andrea Busi 3b93ab84ce refactor: Improve code in EQNManager and remove dead code 2020-09-24 10:26:55 +02:00
Andrea Busi 8a4f6436f0 refactor: Use updated API to retrieve seismics 2020-09-24 10:26:55 +02:00
Andrea Busi ea2573c17c refactor: Reorganize some constants 2020-09-24 10:26:55 +02:00
Andrea Busi 0f5c4fc8dc Merge branch 'stable/v2.2.x' into develop 2020-09-24 10:25:45 +02:00
Andrea Busi 831c33bdb9 release: Increase version for release 2020-09-21 14:01:14 +02:00
Andrea Busi 7438f8bfb9 fix: Force alert refresh when view is displayed 2020-09-21 14:00:49 +02:00
Andrea Busi 86de3fa026 refactor: Remove no longer used class 2020-09-21 14:00:49 +02:00
Andrea Busi b47fdcb8a1 feat: Update notification settings when seismic filters change 2020-09-21 09:33:03 +02:00
Andrea Busi ce3436876d refactor: Improve code for notification models 2020-09-21 09:33:03 +02:00
Andrea Busi 2d0a453626 feat: Add warning alert if magitude filter is lower than 2.0 2020-09-21 09:33:03 +02:00
Andrea Busi e9cc1e9ea2 refactor: Review nav bar background and tint color 2020-09-21 09:33:03 +02:00
Andrea Busi 2627eef807 dependency: Update Pods 2020-09-20 21:48:42 +02:00
Andrea Busi 4cf1ae1fb3 chore: Update Xcode to recommended settings 2020-09-20 21:48:42 +02:00
Andrea Busi c7bf8ecc94 refactor: Recreate filters in Seismic section
- Add new fitlters
- Recreate controllers and support classes in Swift

Resolves: https://gitlab.steamware.net/eqn/eqn.ios/-/issues/14
2020-09-20 21:48:42 +02:00
Andrea Busi 323a9df3e8 refactor: Improve Swift interoperability 2020-09-20 16:06:39 +02:00
Andrea Busi ce21acce3b fix: Add missing translation for a magnitude value 2020-09-20 16:06:39 +02:00
Andrea Busi 81f8740486 refactor: Recreate controllers to manage filters in Seismic section 2020-09-15 07:05:43 +02:00
Andrea Busi 41c4170e71 feat: Add generic picker view 2020-09-15 07:05:42 +02:00
Andrea Busi 16e0d15522 fix: Remove debug print 2020-09-11 17:13:23 +02:00
Andrea Busi 62e6437d4a refactor: Remove not yet used classes 2020-09-11 17:13:19 +02:00
Andrea Busi a71ee9afbf feat: Add class to style rounded buttons 2020-09-11 17:11:39 +02:00
Andrea Busi bb3c8798f3 refactor: Use Colors inside AppTheme to handle app colors 2020-09-11 17:11:39 +02:00
Andrea Busi c23012cc56 refactor: Remove unused color 2020-09-11 16:30:08 +02:00
662 changed files with 16142 additions and 14174 deletions
+267
View File
@@ -1,5 +1,272 @@
# Changelog
## Versione 4.1
### Build (80)
- Allineate stringhe esistenti ad Android
- Aggiunte nuove lingue
- Fix grafici minori
### Build (77)
- Allineate stringhe con app Android
## Versione 4.0.1
### Build (76)
- Corretto crash in recap segnalazioni ultime 24h
- Corretto crash in filtro mappe, per date nulle
- Corretto carattere errato in stringhe ES, che causava crash a random
## Versione 4.0
### Build (75)
- Corretto tap doppio non funzionante
- Cerchi nascosti se sisma non è più tra quelli da mostrare
### Build (74)
- Aggiunti cerchi su sisma selezionato in mappa sismi da rete sismica
- Piccole correzioni grafiche e traduzioni mancanti
- RImossi entitlements non utilizzati da provisioning
### Build (73)
- Aggiunti filtri in mappa sismi da rete sismica
### Build (72)
- Aggiornate icone per mappe/notifiche
- Aggiunto nuovo flag per attivare/disattivare critical alerts
### Build (71)
- Correzioni varie interfaccia
- Aggiunto pulsante per aprire Telegram
- Versione incrementata da 3.4 a 4.0
### Build (70)
- Rifatta mappa sismi reti sismiche
### Build (69)
- Corretta gestione filtri iniziale
### Build (68)
- Corretto allineamento icone su mappa (centrate rispetto alla coordinata)
- Aggiunta logica per determinare filtro iniziale
### Build (66)
- Corretti valori sballati segnalazioni utente
### Build (64)
- Aggiunto alert al tap sui vari punti della mappa
- Aggiunti cerchi su terremoto più recente in allerte sismiche passate
### Build (63)
- Rifatta mappa allerte sismiche passate
- Aggiornate icone
- Utilizzati nuovi modelli anche in estensione notifiche
### Build (62)
- Corretto cluster visualizzato (quello che contiene la segnalazione più recente)
- Aumentato zoom sul cluster
- Corretto problema di refresh
### Build (61)
- Creato controller base per gestire mappe (al momento usato in mappa segnalazioni utente, mappa sisma e simulatore)
- Aggiunto bottone "X" per chiudere mappa invece della nav bar azzurra
- Allineate funzionalità mappa segnalazioni utente con Android (cluster, icone più grandi)
- Rivisto picker filtro in mappa
- Filtro "6 ore" non era gestito
- Colore icone in mappa segnalazioni utente era spesso sbagliato
- Rivisti modelli per dati scaricati
### Build (60)
- Riprodotto suono custom per notifiche critiche
### Build (59)
- Workaround per notifiche critiche con api firebase legacy
### Build (55)
- Aggiunta pagina di debug
- Abilitati critical alerts
## Versione 3.3.2
### Build (58)
- Corretto spazio banner sempre visibile
### Build (57)
- Corretto layout conteggio
### Build (56)
- Corretto crash in configurazione iniziale
- Corretta distanza in allerta tempo reale
- Aggiunto conto alla rovescia in allerta tempo reale in home
## Versione 3.3.1
### Build (54)
- Corretto problema user-id non ricavato
## Versione 3.3
### Build (52)
- Aggiunta gestione in caso di fallita registrazione iniziale al server
### Build (51)
- Utilizzati adaptive e native banner
- Aggiornate dipendenze
- Rimosso codice non utilizzato
## Versione 3.2.1
### Build (50)
- Aggiunta chiamata per registrazione acquisto
- Rivisto modell EQNReteSmartphone
### Build (49)
- Aggiunta indicazione prodotto ripristinato
- Aggiunto messaggio se nessun prodotto da ripristinare
## Versione 3.2.0
### Build (48)
- Rimosse stringhe non utilizzate
- Aggiunto bottone per aprire pagina abbonamenti
### Build (47)
- Corretto problema layout in home
- Aggiunta funzione simulatore
- Rimosse stringhe non utilizzate e aggiornate traduzioni mancanti
## Versione 3.1.0
### Build (46)
- Corretto invio parametri per test allerta
### Build (45)
- Rimossi suoni non utilizzati
- Rivista content extension notifica
## Versione 3.0
### Build (44)
- Corrette stringhe in tab Sismi
- Disabilitato zoom mappa in Allerte
- Nascosto bottone per "Simulatore"
- Corretto problema ritardo visualizzazione notifiche push
- Suono notifiche riprodotto anche con app in foreground
- Icone in notifiche caricate da locale e non scaricate dal server
- Aggiornato suono notifica
### Build (43)
- Corretto scaricamento dati sismi per gestione "qualsiasi terremoto se < 50 km"
- Corretta selezione cella "dati posizione"
### Build (42)
- Corretto filtro rete GEONET
- Completata funzione "Test allerta"
- Aggiunta card "dati posizione"
### Build (40)
- Completato flusso e alert per invio messaggio
- Correzioni layout
### Build (39)
- Ombra e angoli arrotondati in card
- Funzione test allerte (WIP)
### Build (38)
- Aggiornate icone stelle
- Aggiunto messaggio localizzazione
- Rimosso bottone invio messaggio
### Build (37)
- Correzioni varie layout
- Corretto flusso invio commento
### Build (36)
- Migrate chiamate ad HTTPS
- Rimossa eccezione AppTransportSecurity per chiamate non sicure
- Aggiunto meccanismo cache per sismi
- Rivisto layout tab Segnalazioni (WIP)
- Rivisto layout tab Allerte (WIP)
## Versione 2.3.2
### Build (41)
- Corretto caricamento parametri settings
- Corretto filtro per rete Geonet
- Fix minori
## Versione 2.3.1
### Build (35)
- Aggiunto controllo su data in schede sismi per evitare crash
- Aggiunta gestione dati meteo non disponibili
## Versione 2.3
### Build (34)
- Apertura automatica selezione nazione (solo 1 volta, ad installazione/update app)
- Corretti decimali in layout card sisma
- Rimosso controller loading iniziale
### Build (33)
- Corretto crash con lingua spagnola
### Build (32)
- Aggiunto testo in condivisione sisma
- Aggiunte icone in notifiche push per nuove reti
### Build (31)
- Risolto crash in reload tabella reti sismiche
- Possibile fix per crash in background
### Build (30)
- Migliorata selezione nazione
- Corretta traduzione errata
### Build (29)
- Corretti colore e udm magnitudo in schede sisma
- Aggiunte nuove reti sismiche
- Migrato a nuovo endpoint per salvataggio settings
- Corretto errore in invio parametri settings
- Aggiunto aggiornamento reti notifiche da selezione nazione
### Build (28)
- Messaggio se tabella sismi è vuota
- Corretto filtro enti
### Build (27)
- Corretto zoom mappa
- Corretto elenco reti e ordinato in filtri
- Apertura mappa da cella espansa
- Aggiornate icone sezione sismi e aggiunga espandi/collassa
### Build (26)
- Aggiunto salvataggio evento in calendario
- Aggiunta logica mancante (filtri, impostazioni e mappa dettaglio)
- Corretto layout schede sismi
- Aggiunta gestione campanella
- Aggiunto popup per impostazioni singola card
### Build (25)
- Nuovo layout in schede sismi
### Build (23)
- Refresh impostazioni se torno da filtri
- Cambiata API per download sismi e aggiornati relativi modelli
- Aggiunta nuova gestione per download sismi in base a magnitudo
### Build (22)
- Aggiunto aggiornamento impostazioni notifiche se toggle filtri sismi è attivo
- Correzioni grafiche varie
### Build (21)
- Ricreato controlle per gestione filtri Sismi
- Aggiunti filtri mancanti e rivista logica filtro
- Compilazione con Xcode 12 (iOS 14)
### Build (20)
- Ricreati controller per gestione filtri in sezione Sismi
## Versione 2.2.1
### Build (24)
@@ -0,0 +1,33 @@
{
"Simulator Target Bundle": "com.finazzi.distquake",
"aps": {
"alert": {
"loc-args": [
"150 km (Test)"
],
"loc-key": "Rilevato sisma forte a",
"title-loc-key": "Allerta sismica in tempo reale"
},
"category": "notifica_con_mappa",
"content-available": 1,
"mutable-content": 1,
"sound": "alert_star_trek.wav"
},
"counter": 10,
"datetime": "2021-04-15 21:34:50",
"detection_latitude": "37.983810",
"detection_longitude": "23.727539",
"gcm.message_id": "1614708857742608",
"google.c.a.e": 1,
"google.c.sender.id": "899482329945",
"intensity": 2,
"latitude": "37.683810",
"location": "150 km (Test)",
"longitude": "23.327539",
"peak": "-1",
"randcode": 0,
"test": 1,
"type": "eqn",
"wave_speed": "4.7",
"critical": true
}
@@ -0,0 +1,33 @@
{
"Simulator Target Bundle": "com.finazzi.distquake",
"aps": {
"alert": {
"loc-args": [
"150 km (Test)"
],
"loc-key": "Rilevato sisma forte a",
"title-loc-key": "Allerta sismica in tempo reale"
},
"category": "notifica_con_mappa",
"content-available": 1,
"mutable-content": 1,
"sound": "alert_star_trek.wav"
},
"counter": 10,
"datetime": "2021-04-16 12:41:20",
"detection_latitude": "37.3229978",
"detection_longitude": "-122.0321823",
"gcm.message_id": "1614708857742608",
"google.c.a.e": 1,
"google.c.sender.id": "899482329945",
"intensity": 2,
"latitude": "37.9229978",
"location": "150 km (Test)",
"longitude": "-121.0321823",
"peak": "-1",
"randcode": 0,
"test": 1,
"type": "eqn",
"wave_speed": "4.7",
"critical": true
}
@@ -0,0 +1,33 @@
{
"Simulator Target Bundle": "com.finazzi.distquake",
"aps": {
"alert": {
"loc-args": [
"150 km (Test)"
],
"loc-key": "Rilevato sisma forte a",
"title-loc-key": "Allerta sismica in tempo reale"
},
"category": "notifica_con_mappa",
"content-available": 1,
"mutable-content": 1,
"sound": "alert_star_trek.wav"
},
"counter": 10,
"datetime": "2021-04-15 20:39:00",
"detection_latitude": "-34.603722",
"detection_longitude": "-58.381592",
"gcm.message_id": "1614708857742608",
"google.c.a.e": 1,
"google.c.sender.id": "899482329945",
"intensity": 2,
"latitude": "-34.103722",
"location": "150 km (Test)",
"longitude": "-58.781592",
"peak": "-1",
"randcode": 0,
"test": 1,
"type": "eqn",
"wave_speed": "4.7",
"critical": true
}
@@ -0,0 +1,33 @@
{
"Simulator Target Bundle": "com.finazzi.distquake",
"aps": {
"alert": {
"loc-args": [
"150 km (Test)"
],
"loc-key": "Rilevato sisma forte a",
"title-loc-key": "Allerta sismica in tempo reale"
},
"category": "notifica_con_mappa",
"content-available": 1,
"mutable-content": 1,
"sound": "alert_star_trek.wav"
},
"counter": 10,
"datetime": "2021-04-15 21:37:40",
"detection_latitude": "48.856614",
"detection_longitude": "2.8522219",
"gcm.message_id": "1614708857742608",
"google.c.a.e": 1,
"google.c.sender.id": "899482329945",
"intensity": 2,
"latitude": "48.456614",
"location": "150 km (Test)",
"longitude": "2.3522219",
"peak": "-1",
"randcode": 0,
"test": 1,
"type": "eqn",
"wave_speed": "4.7",
"critical": true
}
@@ -0,0 +1,33 @@
{
"Simulator Target Bundle": "com.finazzi.distquake",
"aps": {
"alert": {
"loc-args": [
"150 km (Test)"
],
"loc-key": "Rilevato sisma forte a",
"title-loc-key": "Allerta sismica in tempo reale"
},
"category": "notifica_con_mappa",
"content-available": 1,
"mutable-content": 1,
"sound": "alert_star_trek.wav"
},
"counter": 10,
"datetime": "2021-04-15 21:39:50",
"detection_latitude": "45.813177",
"detection_longitude": "15.977048",
"gcm.message_id": "1614708857742608",
"google.c.a.e": 1,
"google.c.sender.id": "899482329945",
"intensity": 2,
"latitude": "45.413177",
"location": "150 km (Test)",
"longitude": "15.677048",
"peak": "-1",
"randcode": 0,
"test": 1,
"type": "eqn",
"wave_speed": "4.7",
"critical": true
}
@@ -0,0 +1,33 @@
{
"Simulator Target Bundle": "com.finazzi.distquake",
"aps": {
"alert": {
"loc-args": [
"150 km (Test)"
],
"loc-key": "Rilevato sisma forte a",
"title-loc-key": "Allerta sismica in tempo reale"
},
"category": "notifica_con_mappa",
"content-available": 1,
"mutable-content": 1,
"sound": "alert_star_trek.wav"
},
"counter": 10,
"datetime": "2021-04-15 21:42:40",
"detection_latitude": "-2.548926",
"detection_longitude": "118.0148634",
"gcm.message_id": "1614708857742608",
"google.c.a.e": 1,
"google.c.sender.id": "899482329945",
"intensity": 2,
"latitude": "-2.948926",
"location": "150 km (Test)",
"longitude": "118.6148634",
"peak": "-1",
"randcode": 0,
"test": 1,
"type": "eqn",
"wave_speed": "4.7",
"critical": true
}
@@ -0,0 +1,33 @@
{
"Simulator Target Bundle": "com.finazzi.distquake",
"aps": {
"alert": {
"loc-args": [
"150 km (Test)"
],
"loc-key": "Rilevato sisma forte a",
"title-loc-key": "Allerta sismica in tempo reale"
},
"category": "notifica_con_mappa",
"content-available": 1,
"mutable-content": 1,
"sound": "alert_star_trek.wav"
},
"counter": 10,
"datetime": "2021-04-15 20:32:20",
"detection_latitude": "45.64664",
"detection_longitude": "9.188540",
"gcm.message_id": "1614708857742608",
"google.c.a.e": 1,
"google.c.sender.id": "899482329945",
"intensity": 2,
"latitude": "45.164664",
"location": "150 km (Test)",
"longitude": "9.788540",
"peak": "-1",
"randcode": 0,
"test": 1,
"type": "eqn",
"wave_speed": "4.7",
"critical": true
}
@@ -0,0 +1,33 @@
{
"Simulator Target Bundle": "com.finazzi.distquake",
"aps": {
"alert": {
"loc-args": [
"150 km (Test)"
],
"loc-key": "Rilevato sisma forte a",
"title-loc-key": "Allerta sismica in tempo reale"
},
"category": "notifica_con_mappa",
"content-available": 1,
"mutable-content": 1,
"sound": "alert_star_trek.wav"
},
"counter": 10,
"datetime": "2021-04-16 12:39:40",
"detection_latitude": "19.432608",
"detection_longitude": "-99.133209",
"gcm.message_id": "1614708857742608",
"google.c.a.e": 1,
"google.c.sender.id": "899482329945",
"intensity": 2,
"latitude": "19.932608",
"location": "150 km (Test)",
"longitude": "-98.033209",
"peak": "-1",
"randcode": 0,
"test": 1,
"type": "eqn",
"wave_speed": "4.7",
"critical": true
}
@@ -0,0 +1,33 @@
{
"Simulator Target Bundle": "com.finazzi.distquake",
"aps": {
"alert": {
"loc-args": [
"150 km (Test)"
],
"loc-key": "Rilevato sisma forte a",
"title-loc-key": "Allerta sismica in tempo reale"
},
"category": "notifica_con_mappa",
"content-available": 1,
"mutable-content": 1,
"sound": "alert_star_trek.wav"
},
"counter": 10,
"datetime": "2021-04-15 21:44:30",
"detection_latitude": "41.008238",
"detection_longitude": "28.978359",
"gcm.message_id": "1614708857742608",
"google.c.a.e": 1,
"google.c.sender.id": "899482329945",
"intensity": 2,
"latitude": "41.608238",
"location": "150 km (Test)",
"longitude": "28.678359",
"peak": "-1",
"randcode": 0,
"test": 1,
"type": "eqn",
"wave_speed": "4.7",
"critical": true
}
@@ -1,11 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="M4Y-Lb-cyx">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17156" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="M4Y-Lb-cyx">
<device id="retina4_7" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14490.49"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17125"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
@@ -15,68 +13,61 @@
<objects>
<viewController id="M4Y-Lb-cyx" userLabel="Notification View Controller" customClass="NotificationViewController" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" simulatedAppContext="notificationCenter" id="S3S-Oj-5AN">
<rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
<rect key="frame" x="0.0" y="0.0" width="320" height="330"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pCT-Wh-lut">
<rect key="frame" x="30" y="28" width="274" height="33"/>
<constraints>
<constraint firstAttribute="height" constant="33" id="3nL-zP-Xy4"/>
</constraints>
<fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
<nil key="textColor"/>
<rect key="frame" x="8" y="216" width="304" height="20.5"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleHeadline"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f3d-th-bgU">
<rect key="frame" x="16" y="69" width="288" height="47"/>
<constraints>
<constraint firstAttribute="height" constant="47" id="ret-xK-EBP"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bT3-3m-qLh">
<rect key="frame" x="16" y="124" width="288" height="29"/>
<constraints>
<constraint firstAttribute="height" constant="29" id="Uqp-c7-9jk"/>
</constraints>
<fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bT3-3m-qLh">
<rect key="frame" x="8" y="285" width="304" height="29"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleTitle2"/>
<color key="textColor" red="0.91764705879999997" green="0.46274509800000002" blue="0.0078431372550000003" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<mapView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" mapType="standard" translatesAutoresizingMaskIntoConstraints="NO" id="4ID-Zb-OQF">
<rect key="frame" x="0.0" y="161" width="320" height="259"/>
<rect key="frame" x="0.0" y="0.0" width="320" height="200"/>
<constraints>
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="259" id="WpP-bs-nlm"/>
<constraint firstAttribute="height" constant="200" id="Pgl-8e-ePq"/>
</constraints>
<connections>
<outlet property="delegate" destination="M4Y-Lb-cyx" id="Cs2-OY-eT2"/>
</connections>
</mapView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f3d-th-bgU">
<rect key="frame" x="8" y="244.5" width="304" height="20.5"/>
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstItem="4ID-Zb-OQF" firstAttribute="leading" secondItem="2BE-c3-nQJ" secondAttribute="leading" id="6ml-zm-WGB"/>
<constraint firstItem="f3d-th-bgU" firstAttribute="top" secondItem="pCT-Wh-lut" secondAttribute="bottom" constant="8" id="7wZ-2G-DRJ"/>
<constraint firstItem="f3d-th-bgU" firstAttribute="leading" secondItem="2BE-c3-nQJ" secondAttribute="leading" constant="16" id="B18-89-k0p"/>
<constraint firstItem="2BE-c3-nQJ" firstAttribute="trailing" secondItem="f3d-th-bgU" secondAttribute="trailing" constant="16" id="JZ8-8S-jXR"/>
<constraint firstItem="2BE-c3-nQJ" firstAttribute="trailing" secondItem="pCT-Wh-lut" secondAttribute="trailing" constant="16" id="P48-jk-9M7"/>
<constraint firstItem="4ID-Zb-OQF" firstAttribute="top" secondItem="bT3-3m-qLh" secondAttribute="bottom" constant="8" id="beN-rS-bGS"/>
<constraint firstItem="bT3-3m-qLh" firstAttribute="leading" secondItem="2BE-c3-nQJ" secondAttribute="leading" constant="16" id="cYK-5u-EMT"/>
<constraint firstItem="4ID-Zb-OQF" firstAttribute="bottom" secondItem="2BE-c3-nQJ" secondAttribute="bottom" constant="-60" id="gfC-gJ-8KE"/>
<constraint firstItem="bT3-3m-qLh" firstAttribute="top" secondItem="f3d-th-bgU" secondAttribute="bottom" constant="8" id="ixD-Y8-JnR"/>
<constraint firstItem="4ID-Zb-OQF" firstAttribute="trailing" secondItem="2BE-c3-nQJ" secondAttribute="trailing" id="n4A-8c-Bbr"/>
<constraint firstItem="2BE-c3-nQJ" firstAttribute="trailing" secondItem="bT3-3m-qLh" secondAttribute="trailing" constant="16" id="sak-kv-U04"/>
<constraint firstItem="pCT-Wh-lut" firstAttribute="leading" secondItem="2BE-c3-nQJ" secondAttribute="leading" constant="30" id="tuy-Pe-AhL"/>
<constraint firstItem="pCT-Wh-lut" firstAttribute="top" secondItem="2BE-c3-nQJ" secondAttribute="top" constant="8" id="xC7-C5-Yju"/>
</constraints>
<viewLayoutGuide key="safeArea" id="2BE-c3-nQJ"/>
<constraints>
<constraint firstItem="pCT-Wh-lut" firstAttribute="leading" secondItem="2BE-c3-nQJ" secondAttribute="leading" constant="8" id="3cg-0U-ASJ"/>
<constraint firstItem="f3d-th-bgU" firstAttribute="leading" secondItem="pCT-Wh-lut" secondAttribute="leading" id="7qA-vV-ocI"/>
<constraint firstItem="2BE-c3-nQJ" firstAttribute="trailing" secondItem="pCT-Wh-lut" secondAttribute="trailing" constant="8" id="CAC-UM-SaJ"/>
<constraint firstItem="f3d-th-bgU" firstAttribute="trailing" secondItem="pCT-Wh-lut" secondAttribute="trailing" id="Dd7-BF-iOG"/>
<constraint firstItem="f3d-th-bgU" firstAttribute="top" secondItem="pCT-Wh-lut" secondAttribute="bottom" constant="8" id="FJ8-nn-ydU"/>
<constraint firstItem="2BE-c3-nQJ" firstAttribute="bottom" secondItem="bT3-3m-qLh" secondAttribute="bottom" constant="16" id="I71-6U-jK3"/>
<constraint firstItem="pCT-Wh-lut" firstAttribute="top" secondItem="4ID-Zb-OQF" secondAttribute="bottom" constant="16" id="It9-RA-906"/>
<constraint firstItem="bT3-3m-qLh" firstAttribute="trailing" secondItem="f3d-th-bgU" secondAttribute="trailing" id="KXf-x4-iZs"/>
<constraint firstItem="bT3-3m-qLh" firstAttribute="leading" secondItem="f3d-th-bgU" secondAttribute="leading" id="QlJ-Vh-oi4"/>
<constraint firstItem="bT3-3m-qLh" firstAttribute="top" secondItem="f3d-th-bgU" secondAttribute="bottom" constant="20" id="UUO-2F-eE7"/>
<constraint firstItem="4ID-Zb-OQF" firstAttribute="trailing" secondItem="2BE-c3-nQJ" secondAttribute="trailing" id="buf-BU-I5b"/>
<constraint firstItem="4ID-Zb-OQF" firstAttribute="leading" secondItem="2BE-c3-nQJ" secondAttribute="leading" id="e8D-ji-t64"/>
<constraint firstItem="4ID-Zb-OQF" firstAttribute="top" secondItem="2BE-c3-nQJ" secondAttribute="top" id="hL6-gc-S6i"/>
</constraints>
</view>
<extendedEdge key="edgesForExtendedLayout"/>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<size key="freeformSize" width="320" height="480"/>
<size key="freeformSize" width="320" height="330"/>
<connections>
<outlet property="descrizione" destination="f3d-th-bgU" id="3PP-J5-iAi"/>
<outlet property="mappa" destination="4ID-Zb-OQF" id="d2K-qy-Q7P"/>
<outlet property="onda" destination="bT3-3m-qLh" id="xoD-qM-UAF"/>
<outlet property="titolo" destination="pCT-Wh-lut" id="C0V-PC-Sai"/>
<outlet property="descriptionLabel" destination="f3d-th-bgU" id="Aym-KJ-DqY"/>
<outlet property="mapView" destination="4ID-Zb-OQF" id="x8o-nT-bL4"/>
<outlet property="titleLabel" destination="pCT-Wh-lut" id="uIg-dn-Wms"/>
<outlet property="waveLabel" destination="bT3-3m-qLh" id="AkJ-nd-d2R"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="vXp-U4-Rya" userLabel="First Responder" sceneMemberID="firstResponder"/>
@@ -2,3 +2,6 @@
// Use this file to import your target's public headers that you would like to expose to Swift.
//
#import "EQNPastquakes.h"
#import "EQNSegnalazione.h"
#import "EQNUtility.h"
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.finazzi.distquake</string>
</array>
</dict>
</plist>
@@ -2,17 +2,12 @@
// NotificationViewController.h
// EQNNotificationContent
//
// Created by Luca Beretta on 03/01/2019.
// Copyright © 2019 Luca Beretta. All rights reserved.
// Refactored by Andrea Busi on 14/10/2020.
// Copyright © 2020 Earthquake Network. All rights reserved.
//
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
@interface NotificationViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *titolo;
@property (weak, nonatomic) IBOutlet UILabel *descrizione;
@property (weak, nonatomic) IBOutlet UILabel *onda;
@property (weak, nonatomic) IBOutlet MKMapView *mappa;
@end
@@ -2,82 +2,128 @@
// NotificationViewController.m
// EQNNotificationContent
//
// Created by Luca Beretta on 03/01/2019.
// Copyright © 2019 Luca Beretta. All rights reserved.
// Refactored by Andrea Busi on 14/10/2020.
// Copyright © 2020 Earthquake Network. All rights reserved.
//
#import "NotificationViewController.h"
#import <UserNotifications/UserNotifications.h>
#import <UserNotificationsUI/UserNotificationsUI.h>
#import <MapKit/MapKit.h>
#import "PastquakesAnnotation.h"
#import "ReteSismicaAnnotation.h"
#import "EQNUtility.h"
#import "EQNNotificationContent-Swift.h"
@import UserNotifications;
@import UserNotificationsUI;
@import MapKit;
@interface NotificationViewController () <UNNotificationContentExtension, MKMapViewDelegate>
@property (nonatomic, strong) NSDictionary *info;
@property (nonatomic, strong) NSURLSession *session;
@property (weak, nonatomic) IBOutlet UILabel *titleLabel;
@property (weak, nonatomic) IBOutlet UILabel *descriptionLabel;
@property (weak, nonatomic) IBOutlet UILabel *waveLabel;
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
/// This will be calculated as seismic date + warning time
@property (strong, nonatomic) NSDate *userSeismicTimestamp;
@property (strong, nonatomic) NSTimer *countdownTimer;
@end
@implementation NotificationViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any required interface initialization here.
- (void)setMapView:(MKMapView *)mapView
{
_mapView = mapView;
_mapView.scrollEnabled = NO;
_mapView.zoomEnabled = NO;
}
-(void)didReceiveNotification:(UNNotification *)notification {
#pragma mark - View Lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
self.titolo.text = notification.request.content.title;
self.descrizione.text = notification.request.content.body;
NSDictionary *dict = notification.request.content.userInfo;
CLLocation *coordinate = [[CLLocation alloc] initWithLatitude:[dict[@"latitude"] doubleValue] longitude:[dict[@"longitude"] doubleValue]];
[self.mapView registerClass:[EQNCustomAnnotationView class] forAnnotationViewWithReuseIdentifier:EQNCustomAnnotationView.SingleLineIdentifier];
}
- (void)didReceiveNotification:(UNNotification *)notification
{
UNNotificationContent *content = notification.request.content;
NSDictionary *userInfo = content.userInfo;
// set title and description
self.titleLabel.text = content.title;
self.descriptionLabel.text = content.body;
// add annotation onthe map
CLLocation *coordinate = [[CLLocation alloc] initWithLatitude:[userInfo[@"latitude"] doubleValue]
longitude:[userInfo[@"longitude"] doubleValue]];
MKCoordinateSpan span = MKCoordinateSpanMake(10.5, 10.5);
MKCoordinateRegion region = MKCoordinateRegionMake(coordinate.coordinate, span);
self.mappa.delegate = self;
[self.mappa setCenterCoordinate:coordinate.coordinate animated:NO];
[self.mappa setRegion:region animated:YES];
self.mappa.scrollEnabled = NO;
[self.mapView setCenterCoordinate:coordinate.coordinate animated:NO];
[self.mapView setRegion:region animated:YES];
if ([dict[@"type"] isEqualToString:@"eqn"]) {
PastquakesAnnotation *annotation = [[PastquakesAnnotation alloc] initWithTitle:notification.request.content.body location:coordinate.coordinate intensita:[dict[@"intensity"] intValue]];
[self.mappa addAnnotation:annotation];
}
else if ([dict[@"type"] isEqualToString:@"manual"]){
ReteSismicaAnnotation *annotation = [[ReteSismicaAnnotation alloc] initWithTitle:notification.request.content.body location:coordinate.coordinate magnitudo:[dict[@"magnitudo"] intValue]];
[self.mappa addAnnotation:annotation];
if ([userInfo[@"type"] isEqualToString:@"eqn"]) {
EQNMapAnnotationPastquake *annotation = [[EQNMapAnnotationPastquake alloc] initWithTitle:@""
coordinate:coordinate.coordinate
intensity:[userInfo[@"intensity"] intValue]];
[self.mapView addAnnotation:annotation];
} else if ([userInfo[@"type"] isEqualToString:@"manual"]){
EQNMapAnnotationUserReport *annotation = [[EQNMapAnnotationUserReport alloc] initWithTitle:@""
coordinate:coordinate.coordinate
magnitude:[userInfo[@"magnitudo"] intValue]];
[self.mapView addAnnotation:annotation];
}
self.onda.text = [NSString stringWithFormat:@"%@ %@ %@", NSLocalizedString(@"Onda sismica in", @""), dict[@"wave_speed"], NSLocalizedString(@"secondi", @"")];
self.userSeismicTimestamp = [EQNUtility calculateUserSeismicTimestampFromUserInfo:userInfo];
if (self.userSeismicTimestamp) {
// start the countdown
self.countdownTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(countdownFired:)
userInfo:nil
repeats:YES];
[self.countdownTimer fire];
}
}
-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation{
#pragma mark - Private
- (void)countdownFired:(id)sender
{
NSDate *now = [NSDate date];
NSTimeInterval difference = MAX([self.userSeismicTimestamp timeIntervalSinceDate:now], 0);
NSInteger seconds = (int)lround(difference);
if ([annotation isKindOfClass:[PastquakesAnnotation class]]) {
PastquakesAnnotation *anLocation = (PastquakesAnnotation *)annotation;
MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:IDENTIFIER_ANNOTATION_PASTQUAKES];
if (annotationView == nil)
annotationView = anLocation.annotationView;
else
annotationView.annotation = anLocation;
self.waveLabel.text = [NSString stringWithFormat:NSLocalizedString(@"alert_wave", @""), seconds];
if (difference <= 0) {
// stop the countdown
[self.countdownTimer invalidate];
self.countdownTimer = nil;
}
}
#pragma mark - MKMapViewDelegate
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
if ([annotation isKindOfClass:[EQNMapAnnotationPastquake class]]) {
EQNMapAnnotationPastquake *pastquake = (EQNMapAnnotationPastquake *)annotation;
EQNCustomAnnotationView *annotationView = (EQNCustomAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:EQNCustomAnnotationView.SingleLineIdentifier];
annotationView.image = pastquake.image;
annotationView.title = pastquake.title;
return annotationView;
} else if ([annotation isKindOfClass:[EQNMapAnnotationUserReport class]]) {
EQNMapAnnotationUserReport *report = (EQNMapAnnotationUserReport *)annotation;
EQNCustomAnnotationView *annotationView = (EQNCustomAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:EQNCustomAnnotationView.SingleLineIdentifier];
annotationView.image = report.image;
annotationView.title = report.title;
return annotationView;
}
else if ([annotation isKindOfClass:[ReteSismicaAnnotation class]]) {
ReteSismicaAnnotation *anLocation = (ReteSismicaAnnotation *)annotation;
MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:IDENTIFIER_ANNOTATION_RETESMARTPHONE];
if (annotationView == nil)
annotationView = anLocation.annotationView;
else
annotationView.annotation = anLocation;
return annotationView;
}
return nil;
return nil;
}
@end
@@ -1,9 +0,0 @@
/* Class = "UILabel"; text = "Label"; ObjectID = "bT3-3m-qLh"; */
"bT3-3m-qLh.text" = "Label";
/* Class = "UILabel"; text = "Label"; ObjectID = "f3d-th-bgU"; */
"f3d-th-bgU.text" = "Label";
/* Class = "UILabel"; text = "Label"; ObjectID = "pCT-Wh-lut"; */
"pCT-Wh-lut.text" = "Label";
@@ -1,9 +0,0 @@
/* Class = "UILabel"; text = "Label"; ObjectID = "bT3-3m-qLh"; */
"bT3-3m-qLh.text" = "Label";
/* Class = "UILabel"; text = "Label"; ObjectID = "f3d-th-bgU"; */
"f3d-th-bgU.text" = "Label";
/* Class = "UILabel"; text = "Label"; ObjectID = "pCT-Wh-lut"; */
"pCT-Wh-lut.text" = "Label";
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.finazzi.distquake</string>
</array>
</dict>
</plist>
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 753 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 753 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 761 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Some files were not shown because too many files have changed in this diff Show More