diff --git a/bitrise.yml b/bitrise.yml index 0211ebcd9..ca175a1ba 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -158,6 +158,9 @@ workflows: Workflow|${BITRISE_TRIGGERED_WORKFLOW_ID} Prepare: steps: + - set-java-version@1: + inputs: + - set_java_version: '17' - activate-ssh-key: run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' - git-clone@6: diff --git a/entourage.xcodeproj/project.pbxproj b/entourage.xcodeproj/project.pbxproj index b47c94a87..8eb014c60 100644 --- a/entourage.xcodeproj/project.pbxproj +++ b/entourage.xcodeproj/project.pbxproj @@ -379,9 +379,15 @@ 02FCC3172812DDA500578407 /* NeighborhoodHomeGroupCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02FCC3162812DDA500578407 /* NeighborhoodHomeGroupCell.swift */; }; 02FE55B52939F6020076F57A /* OnboardingEndCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02FE55B42939F6020076F57A /* OnboardingEndCell.swift */; }; 02FE55B7293A20030076F57A /* OnboardingEndViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02FE55B6293A20030076F57A /* OnboardingEndViewController.swift */; }; + 261174FE29A670CB00735E9A /* ReportGroupChoosePageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 261174FD29A670CB00735E9A /* ReportGroupChoosePageViewController.swift */; }; 2628A0F2298AAA9400F1BF1D /* Extension_UILabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2628A0F1298AAA9400F1BF1D /* Extension_UILabel.swift */; }; + 264C1AF629AD0E3C0083F83E /* ReportChooseViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 264C1AF529AD0E3C0083F83E /* ReportChooseViewCell.swift */; }; + 264C1AF829AD22AB0083F83E /* ReportChooseViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 264C1AF729AD22AB0083F83E /* ReportChooseViewCell.xib */; }; + 264C1AFA29AF52820083F83E /* HeaderReportView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 264C1AF929AF52820083F83E /* HeaderReportView.xib */; }; + 264C1AFC29AF5BED0083F83E /* HeaderReportView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 264C1AFB29AF5BED0083F83E /* HeaderReportView.swift */; }; 268FCA2A2967281100159C34 /* MJAlertWithImageController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 268FCA292967281100159C34 /* MJAlertWithImageController.swift */; }; 268FCA2C2967288100159C34 /* MJAlertWithImageController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 268FCA2B2967288100159C34 /* MJAlertWithImageController.xib */; }; + 26BC119929C88CD700F204BB /* NeighborhoodPostDeletedCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 26BC119829C88CD700F204BB /* NeighborhoodPostDeletedCell.xib */; }; 7E5BAEB3A1FAD453D344F4AE /* Pods_entourage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E625F1010BF498EB31E0DB1 /* Pods_entourage.framework */; }; /* End PBXBuildFile section */ @@ -752,9 +758,15 @@ 02FE55B42939F6020076F57A /* OnboardingEndCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingEndCell.swift; sourceTree = ""; }; 02FE55B6293A20030076F57A /* OnboardingEndViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingEndViewController.swift; sourceTree = ""; }; 1E625F1010BF498EB31E0DB1 /* Pods_entourage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_entourage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 261174FD29A670CB00735E9A /* ReportGroupChoosePageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportGroupChoosePageViewController.swift; sourceTree = ""; }; 2628A0F1298AAA9400F1BF1D /* Extension_UILabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extension_UILabel.swift; sourceTree = ""; }; + 264C1AF529AD0E3C0083F83E /* ReportChooseViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportChooseViewCell.swift; sourceTree = ""; }; + 264C1AF729AD22AB0083F83E /* ReportChooseViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ReportChooseViewCell.xib; sourceTree = ""; }; + 264C1AF929AF52820083F83E /* HeaderReportView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = HeaderReportView.xib; sourceTree = ""; }; + 264C1AFB29AF5BED0083F83E /* HeaderReportView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeaderReportView.swift; sourceTree = ""; }; 268FCA292967281100159C34 /* MJAlertWithImageController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MJAlertWithImageController.swift; sourceTree = ""; }; 268FCA2B2967288100159C34 /* MJAlertWithImageController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MJAlertWithImageController.xib; sourceTree = ""; }; + 26BC119829C88CD700F204BB /* NeighborhoodPostDeletedCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NeighborhoodPostDeletedCell.xib; sourceTree = ""; }; 6E0C250CECA46B36DA7AE8CC /* Pods-entourage.store.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-entourage.store.xcconfig"; path = "Target Support Files/Pods-entourage/Pods-entourage.store.xcconfig"; sourceTree = ""; }; BFFEEE559B5D831168F2302C /* Pods-entourage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-entourage.debug.xcconfig"; path = "Target Support Files/Pods-entourage/Pods-entourage.debug.xcconfig"; sourceTree = ""; }; EF9863871BD660A314749193 /* Pods-entourage.beta.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-entourage.beta.xcconfig"; path = "Target Support Files/Pods-entourage/Pods-entourage.beta.xcconfig"; sourceTree = ""; }; @@ -981,6 +993,7 @@ 0258AFE3282AD3BD00E7B4AA /* NeighborhoodEventsTableviewCell.swift */, 025C92C22834149B000970D9 /* NeighborhoodEventsTableviewCell.xib */, 025C92C428341611000970D9 /* NeighborhoodEventsCollectionviewCell.xib */, + 26BC119829C88CD700F204BB /* NeighborhoodPostDeletedCell.xib */, ); path = Detail; sourceTree = ""; @@ -1433,10 +1446,12 @@ 02C6E86A28203E1F009D4289 /* Signal */ = { isa = PBXGroup; children = ( + 261174FF29A6718D00735E9A /* reportChooseCells */, 02C6E86C28203E1F009D4289 /* ReportGroupMainViewController.swift */, 02C6E86E28203E1F009D4289 /* ReportGroupPageViewController.swift */, 02C6E86B28203E1F009D4289 /* ReportGroupSendViewController.swift */, 02C6E86D28203E1F009D4289 /* ReportGroupViewController.swift */, + 261174FD29A670CB00735E9A /* ReportGroupChoosePageViewController.swift */, ); path = Signal; sourceTree = ""; @@ -1586,6 +1601,17 @@ path = cells; sourceTree = ""; }; + 261174FF29A6718D00735E9A /* reportChooseCells */ = { + isa = PBXGroup; + children = ( + 264C1AF529AD0E3C0083F83E /* ReportChooseViewCell.swift */, + 264C1AF729AD22AB0083F83E /* ReportChooseViewCell.xib */, + 264C1AF929AF52820083F83E /* HeaderReportView.xib */, + 264C1AFB29AF5BED0083F83E /* HeaderReportView.swift */, + ); + path = reportChooseCells; + sourceTree = ""; + }; 268FCA282965E6A000159C34 /* AlertWithImage */ = { isa = PBXGroup; children = ( @@ -1745,6 +1771,7 @@ 028D4F52293795B700A0BDD3 /* Onboarding.storyboard in Resources */, 0260E9D62936402100242A89 /* Intros.xcassets in Resources */, 021FD9672875F4ED00D3AA54 /* EventListMeCell.xib in Resources */, + 264C1AFA29AF52820083F83E /* HeaderReportView.xib in Resources */, 025C92BA28340F10000970D9 /* NeighborhoodDetailTopMemberCell.xib in Resources */, 02B94C2C284F8F0C006059EF /* HomeActionCell.xib in Resources */, 02856F6227DA334100988FF7 /* ProfileParams.storyboard in Resources */, @@ -1757,6 +1784,7 @@ 025D8723278DD33800909101 /* Assets.xcassets in Resources */, 02E8544E2864AD2C0012D941 /* AddDescriptionFixedTableViewCell.xib in Resources */, 0208268028A68447004B1222 /* ActionDeletePopsViewController.xib in Resources */, + 264C1AF829AD22AB0083F83E /* ReportChooseViewCell.xib in Resources */, 021FD9652875BEAC00D3AA54 /* Event.storyboard in Resources */, 02EFE47A289BFC0D00D70C68 /* Action_Create.storyboard in Resources */, 020AF5E528607EFE0012AE60 /* congrat_short_anim.json in Resources */, @@ -1779,6 +1807,7 @@ 023B07CC27D664F6007752AC /* Profile.xcassets in Resources */, 025D8768278DED3C00909101 /* AppConfigurations.plist in Resources */, 025C92B028340787000970D9 /* NeighborhoodPostTextCell.xib in Resources */, + 26BC119929C88CD700F204BB /* NeighborhoodPostDeletedCell.xib in Resources */, 02CCE67C27D78CAB00D6976C /* NunitoSans-SemiBold.ttf in Resources */, 02CCE67D27D78CAB00D6976C /* NunitoSans-Bold.ttf in Resources */, 02F5FEC527E0CB6800A14313 /* MJAlertController.xib in Resources */, @@ -1882,6 +1911,7 @@ 02CCE68D27D7B8E700D6976C /* MainUserProfileViewController.swift in Sources */, 021318A927DF4E3100B0F1BD /* Metadatas.swift in Sources */, 02EC7E4927E87DD400C1110A /* EditProfilePhotoCell.swift in Sources */, + 264C1AFC29AF5BED0083F83E /* HeaderReportView.swift in Sources */, 0208B0C5289D23E1009A7A58 /* ActionDetailFullViewController.swift in Sources */, 02B7922727F74CCB003AFFB9 /* NeighborhoodCreateMainViewController.swift in Sources */, 02F5278127999A8C00929431 /* MainGuideViewController.swift in Sources */, @@ -1912,6 +1942,7 @@ 022744712795BEC0005600A1 /* AuthService.swift in Sources */, 02C9B4AC27E2377A0026450A /* ParamsAboutCell.swift in Sources */, 0282637C282160B700B354F9 /* NeighborhoodCguCell.swift in Sources */, + 264C1AF629AD0E3C0083F83E /* ReportChooseViewCell.swift in Sources */, 0224597827FF327C00944DE4 /* NeighborhoodCreateLocationCell.swift in Sources */, 02EFE47C289BFD2A00D70C68 /* ActionsMyListViewController.swift in Sources */, 024131D42862030A00561FB4 /* EventCreatePhase2ViewController.swift in Sources */, @@ -1989,6 +2020,7 @@ 02C6E86728203141009D4289 /* NeighborhoodParamEditShowCell.swift in Sources */, 02B57D9E27FC9748005A567B /* PartnerDetailTopCell.swift in Sources */, 024131CB2862022100561FB4 /* EventCreateMainViewController.swift in Sources */, + 261174FE29A670CB00735E9A /* ReportGroupChoosePageViewController.swift in Sources */, 02C54ADF2885BD4A00754222 /* EventFiltersViewController.swift in Sources */, 02A92C2828980F8C000DFF95 /* ActionAddPhotoViewController.swift in Sources */, 0279680A2852472400311D8E /* PedagogicViewModel.swift in Sources */, diff --git a/entourage/Assets/Localizable.strings b/entourage/Assets/Localizable.strings index 807bc493c..8add48c63 100644 --- a/entourage/Assets/Localizable.strings +++ b/entourage/Assets/Localizable.strings @@ -535,6 +535,17 @@ "report_user_signal_error" = "Veuillez choisir au minimum une cause."; "report_user_message_error" = "Veuillez saisir votre message. Merci"; "report_user_message_success" = "Utilisateur signalé"; +"parameter_publication" = "Paramètres de la publication"; +"supress_button_title" = "Supprimer"; +"supress_alert_title" = "Supprimer la publication"; +"supress_alert_text" = "Souhaitez-vous supprimer cette publication ?"; +"deleted_post_text" = "Cette publication a été supprimée"; + +//REPORT AND SUPPRESS POPUP +"report_post_cell_title" = "Signaler"; +"suppress_post_cell_title" = "Supprimer ma publication"; +"report_post_cell_subtitle" = "Signaler cette publication à l'équipe Entourage"; +"suppress_post_cell_subtitle" = ""; /******** @@ -636,7 +647,7 @@ * Group / communauté */ "neighborhood_main_page_title" = "Groupes"; -"neighborhood_main_page_button_myGroups" = "Je participe"; +"neighborhood_main_page_button_myGroups" = "Mes groupes"; "neighborhood_main_page_button_discover" = "Je découvre"; "neighborhoodInputSearch" = "Rechercher un groupe"; "neighborhood_main_page_members" = "%d membres"; @@ -653,6 +664,8 @@ /************* * Group detail */ +"title_is_ambassador" = "Ambassadeur •" ; +"title_is_admin" = "Administrateur •" ; "neighborhood_detail_button_join_member" = "Membre"; "neighborhood_detail_button_join_join" = "Rejoindre"; @@ -789,6 +802,12 @@ /** Events*/ "passed_event" = "Événements passés"; + + +//EVENT TOP Cell +"event_top_cell_organised_by" = "Organisé par "; +"event_top_cell_asso" = "Événement %@" ; + //Create "eventCreatePopCloseBackTitle" = "Attention"; @@ -894,7 +913,11 @@ "event_event_my_empty_subtitle" = "C'est l'occasion de découvrir ce qu'il se passe près de chez vous, ou de créer un nouvel événement !"; "event_event_discover_empty_title" = "Oups, aucun événement autour de vous"; "event_event_discover_empty_subtitle" = "Si aucun événement ne se trouve près de vous, vous pouvez élargir votre zone de recherche."; +"event_no_event_but_discover" = "C'est l'occasion de découvrir ce qu'il se passe près de chez nous, ou de créer un nouvel événement !"; +"event_no_event_go_create" = "Aucun évènement autour de vous. N'hésitez pas à en créer un !"; "event_event_discover_clear_filters" = "Réinitialiser les filtres"; +"event_title_btn_discover_event" = "Découvrir les évènements"; +"event_title_btn_create_event" = "Créer un évènement"; "event_event_discover_empty_search_title" = "Mince, aucun résultat ne correspond à votre recherche !"; "event_event_discover_empty_search_subtitle" = "Vous ne trouvez pas l'événement de vos rêves ? N'attendez plus pour le créer ou élargissez votre zone de recherche."; "event_detail_button_more" = "En savoir plus"; diff --git a/entourage/Assets/Neighborhood.xcassets/report/Contents.json b/entourage/Assets/Neighborhood.xcassets/report/Contents.json new file mode 100644 index 000000000..73c00596a --- /dev/null +++ b/entourage/Assets/Neighborhood.xcassets/report/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/entourage/Assets/Neighborhood.xcassets/report/ic_report.imageset/Contents.json b/entourage/Assets/Neighborhood.xcassets/report/ic_report.imageset/Contents.json new file mode 100644 index 000000000..80ab0d27d --- /dev/null +++ b/entourage/Assets/Neighborhood.xcassets/report/ic_report.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "attention Copy 4.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/entourage/Assets/Neighborhood.xcassets/report/ic_report.imageset/attention Copy 4.pdf b/entourage/Assets/Neighborhood.xcassets/report/ic_report.imageset/attention Copy 4.pdf new file mode 100644 index 000000000..fd1fa93e1 Binary files /dev/null and b/entourage/Assets/Neighborhood.xcassets/report/ic_report.imageset/attention Copy 4.pdf differ diff --git a/entourage/Assets/Neighborhood.xcassets/report/ic_supress.imageset/Contents.json b/entourage/Assets/Neighborhood.xcassets/report/ic_supress.imageset/Contents.json new file mode 100644 index 000000000..c5fe09333 --- /dev/null +++ b/entourage/Assets/Neighborhood.xcassets/report/ic_supress.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "attention Copy 21.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/entourage/Assets/Neighborhood.xcassets/report/ic_supress.imageset/attention Copy 21.pdf b/entourage/Assets/Neighborhood.xcassets/report/ic_supress.imageset/attention Copy 21.pdf new file mode 100644 index 000000000..12904cd03 Binary files /dev/null and b/entourage/Assets/Neighborhood.xcassets/report/ic_supress.imageset/attention Copy 21.pdf differ diff --git a/entourage/Models/GlobalObjects.swift b/entourage/Models/GlobalObjects.swift index a028329b1..87eb87db3 100644 --- a/entourage/Models/GlobalObjects.swift +++ b/entourage/Models/GlobalObjects.swift @@ -48,6 +48,7 @@ struct PostMessage:Codable { var user:UserLightNeighborhood? = nil var commentsCount:Int? = 0 var messageImageUrl:String? = nil + var status:String? = nil var isRetryMsg = false @@ -68,6 +69,7 @@ struct PostMessage:Codable { case commentsCount = "comments_count" case messageImageUrl = "image_url" case read + case status } //Use to sort messages in days Dicts diff --git a/entourage/Models/User.swift b/entourage/Models/User.swift index a1df2820b..618968dfe 100644 --- a/entourage/Models/User.swift +++ b/entourage/Models/User.swift @@ -281,6 +281,12 @@ struct UserLightNeighborhood: Codable { } return false } + func isAmbassador() -> Bool { + guard let role = role else { + return false + } + return role.contains("ambassador") + } } //MARK: - Organization - diff --git a/entourage/Network Managers/Endpoints.swift b/entourage/Network Managers/Endpoints.swift index 1948d866b..a5693d4c6 100644 --- a/entourage/Network Managers/Endpoints.swift +++ b/entourage/Network Managers/Endpoints.swift @@ -48,6 +48,8 @@ let kAPIGetNeighborhoodMessages = "neighborhoods/%@/chat_messages/%@/comments?to let kAPIReportPostNeighborhood = "neighborhoods/%@/chat_messages/%@/report?token=%@" let kAPIReportPostCommentNeighborhood = "neighborhoods/%@/chat_messages/%@/report?token=%@" let kAPIGetNeighborhoodPostMessage = "neighborhoods/%@/chat_messages/%@?token=%@&image_size=high" +let kAPIDeleteNeigborhoodPostMessage = "neighborhoods/%d/chat_messages/%d?token=%@" + //Amazon S3 let API_URL_USER_PREPARE_AVATAR_UPLOAD = "users/me/presigned_avatar_upload.json?token=%@" @@ -85,6 +87,7 @@ let kAPIReportPostCommentEvent = "outings/%@/chat_messages/%@/report?token=%@" let kAPIPostOutingPostMessage = "outings/%@/chat_messages?token=%@" let kAPIGetOutingMessages = "outings/%@/chat_messages/%@/comments?token=%@" let kAPIGetOutingPostMessage = "outings/%@/chat_messages/%@?token=%@&image_size=high" +let kAPIDeleteEventPostMessage = "outings/%d/chat_messages/%d?token=%@" //Actions let kAPIGetContrib = "contributions/%d?token=%@" @@ -114,6 +117,7 @@ let kAPIBlockUser = "user_blocked_users/?token=%@" let kAPIUnBlockUsers = "user_blocked_users/?token=%@" let kAPIGetBlockedUsers = "user_blocked_users?token=%@" let kAPIGetIsBlockedUser = "user_blocked_users/%d?token=%@" +let kAPIGetDeleteMessageInConv = "conversations/%d/chat_messages/%d" //WebLink diff --git a/entourage/Network Managers/EventService.swift b/entourage/Network Managers/EventService.swift index bfdab77d7..d059c00d6 100644 --- a/entourage/Network Managers/EventService.swift +++ b/entourage/Network Managers/EventService.swift @@ -33,7 +33,6 @@ struct EventService:ParsingDataCodable { guard let token = UserDefaults.token else {return} var endpoint = kAPIEventDetail endpoint = String.init(format: endpoint, eventId, token) - NetworkManager.sharedInstance.requestGet(endPoint: endpoint, headers: nil, params: nil) { data, resp, error in guard let data = data,error == nil,let _response = resp as? HTTPURLResponse, _response.statusCode < 300 else { @@ -406,6 +405,24 @@ struct EventService:ParsingDataCodable { } } + //MARK DELETE EVENT POST + static func deletePostMessage(eventId:Int,messageId:Int, urlImage:String? = nil ,completion: @escaping (_ error:EntourageNetworkError?) -> Void) { + guard let token = UserDefaults.token else {return} + var endpoint = kAPIDeleteEventPostMessage + endpoint = String.init(format: endpoint, eventId, messageId, token) + + NetworkManager.sharedInstance.requestDelete(endPoint: endpoint, headers: nil, body: nil) { data, resp, error in + guard let _ = data, error == nil, let _response = resp as? HTTPURLResponse, _response.statusCode < 300 else { + Logger.print("***** error delete event delete - \(error)") + DispatchQueue.main.async { completion(error) } + return + } + DispatchQueue.main.async { completion(nil) } + } + } + + + //MARK: - Comments for Post - static func getCommentsFor(eventId:Int, parentPostId:Int, completion: @escaping (_ messages:[PostMessage]?, _ error:EntourageNetworkError?) -> Void) { diff --git a/entourage/Network Managers/NeighborhoodService.swift b/entourage/Network Managers/NeighborhoodService.swift index e0b34f72b..905c70a7e 100644 --- a/entourage/Network Managers/NeighborhoodService.swift +++ b/entourage/Network Managers/NeighborhoodService.swift @@ -330,7 +330,7 @@ struct NeighborhoodService:ParsingDataCodable { var endpoint = kAPIGetNeighborhoodPostMessage endpoint = String.init(format: endpoint,"\(neighborhoodId)","\(parentPostId)", token) - Logger.print("***** url get PostMessage : \(endpoint)") + Logger.print("***** url eho get PostMessage : \(endpoint)") NetworkManager.sharedInstance.requestGet(endPoint: endpoint, headers: nil, params: nil) { data, resp, error in @@ -343,6 +343,25 @@ struct NeighborhoodService:ParsingDataCodable { } } + //MARK: DELETE POST + static func deletePostMessage(groupId:Int,messageId:Int, urlImage:String? = nil ,completion: @escaping (_ error:EntourageNetworkError?) -> Void) { + guard let token = UserDefaults.token else {return} + var endpoint = kAPIDeleteNeigborhoodPostMessage + endpoint = String.init(format: endpoint, groupId, messageId, token) + + NetworkManager.sharedInstance.requestDelete(endPoint: endpoint, headers: nil, body: nil) { data, resp, error in + + guard let _ = data, error == nil, let _response = resp as? HTTPURLResponse, _response.statusCode < 300 else { + Logger.print("***** error DELETE event DELETE - \(error)") + DispatchQueue.main.async { completion(error) } + return + } + DispatchQueue.main.async { completion(nil) } + } + } + + + //MARK: - Comments for Post - static func getCommentsFor(neighborhoodId:Int, parentPostId:Int, completion: @escaping (_ messages:[PostMessage]?, _ error:EntourageNetworkError?) -> Void) { diff --git a/entourage/Scenes/Actions/ActionDetailFullViewController.swift b/entourage/Scenes/Actions/ActionDetailFullViewController.swift index bf0aaff35..2699a5f04 100644 --- a/entourage/Scenes/Actions/ActionDetailFullViewController.swift +++ b/entourage/Scenes/Actions/ActionDetailFullViewController.swift @@ -264,6 +264,11 @@ extension ActionDetailFullViewController: UITableViewDataSource, UITableViewDele //MARK: - GroupDetailDelegate - extension ActionDetailFullViewController: GroupDetailDelegate { + func publicationDeleted() { + getAction() + self.ui_tableview.reloadData() + } + func showMessage(signalType:GroupDetailSignalType) { let alertVC = MJAlertController() let buttonCancel = MJAlertButtonType(title: "OK".localized, titleStyle:ApplicationTheme.getFontCourantRegularNoir(size: 18, color: .white), bgColor: .appOrange, cornerRadius: -1) diff --git a/entourage/Scenes/Conversations/ConversationParametersViewController.swift b/entourage/Scenes/Conversations/ConversationParametersViewController.swift index 14a64f3af..6f0bbf49e 100644 --- a/entourage/Scenes/Conversations/ConversationParametersViewController.swift +++ b/entourage/Scenes/Conversations/ConversationParametersViewController.swift @@ -95,7 +95,6 @@ class ConversationParametersViewController: BasePopViewController { if let navVC = UIStoryboard.init(name: StoryboardName.userDetail, bundle: nil).instantiateViewController(withIdentifier: "userProfileNavVC") as? UINavigationController { if let _homeVC = navVC.topViewController as? UserProfileDetailViewController { _homeVC.currentUserId = "\(userId)" - self.present(navVC, animated: true) } } @@ -220,6 +219,13 @@ extension ConversationParametersViewController: UITableViewDataSource, UITableVi //MARK: - GroupDetailDelegate - extension ConversationParametersViewController: GroupDetailDelegate { + func publicationDeleted() { + if !isOneToOne { + getConversation() + } + self.ui_tableview.reloadData() + } + func showMessage(signalType:GroupDetailSignalType) { let alertVC = MJAlertController() let buttonCancel = MJAlertButtonType(title: "OK".localized, titleStyle:ApplicationTheme.getFontCourantRegularNoir(size: 18, color: .white), bgColor: .appOrange, cornerRadius: -1) diff --git a/entourage/Scenes/Events/Cells/Feed/EventDetailFullCell.swift b/entourage/Scenes/Events/Cells/Feed/EventDetailFullCell.swift index 063484ac4..e127f232d 100644 --- a/entourage/Scenes/Events/Cells/Feed/EventDetailFullCell.swift +++ b/entourage/Scenes/Events/Cells/Feed/EventDetailFullCell.swift @@ -47,6 +47,11 @@ class EventDetailFullCell: UITableViewCell { @IBOutlet weak var ui_lbl_about_title: UILabel! @IBOutlet weak var ui_lbl_about_desc: UILabel! + @IBOutlet weak var ui_view_organised_by: UIView! + + @IBOutlet weak var ui_label_association: UILabel! + @IBOutlet weak var ui_view_association: UIView! + @IBOutlet weak var ui_label_organised_by: UILabel! @IBOutlet weak var ui_iv_location: UIImageView! @IBOutlet weak var ui_label_distance: UILabel! @IBOutlet weak var ui_view_distance: UIView! @@ -267,6 +272,22 @@ class EventDetailFullCell: UITableViewCell { ui_view_button_join.backgroundColor = .appOrange ui_title_bt_join.text = "event_detail_button_participe_OFF".localized } + + if let _author = event.author { + ui_label_organised_by.text = "event_top_cell_organised_by".localized + _author.displayName + ui_view_organised_by.isHidden = false + if let _asso = _author.partner { + ui_view_association.isHidden = false + ui_label_association.text = String(format: "event_top_cell_asso".localized, _asso.name) + }else{ + ui_view_association.isHidden = true + } + + }else { + ui_view_organised_by.isHidden = true + ui_view_association.isHidden = true + } + } @IBAction func action_show_members(_ sender: Any) { diff --git a/entourage/Scenes/Events/Cells/Feed/EventDetailFullCell.xib b/entourage/Scenes/Events/Cells/Feed/EventDetailFullCell.xib index f1422d0e5..4c6c7a1b0 100644 --- a/entourage/Scenes/Events/Cells/Feed/EventDetailFullCell.xib +++ b/entourage/Scenes/Events/Cells/Feed/EventDetailFullCell.xib @@ -1,9 +1,9 @@ - + - + @@ -30,7 +30,7 @@ - + @@ -55,10 +55,10 @@ - + - + @@ -157,10 +157,10 @@ - + - + @@ -214,8 +214,73 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -241,7 +306,7 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -246,8 +327,8 @@ - - + + @@ -293,14 +374,14 @@ - - + - + @@ -208,7 +208,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -244,7 +322,7 @@ - + @@ -304,6 +382,7 @@ + @@ -312,6 +391,8 @@ + + @@ -320,8 +401,10 @@ + + @@ -329,6 +412,7 @@ + diff --git a/entourage/Scenes/Events/EventDetailFeedViewController.swift b/entourage/Scenes/Events/EventDetailFeedViewController.swift index 3f3585b1f..192bc3f1f 100644 --- a/entourage/Scenes/Events/EventDetailFeedViewController.swift +++ b/entourage/Scenes/Events/EventDetailFeedViewController.swift @@ -58,6 +58,9 @@ class EventDetailFeedViewController: UIViewController { var isLoading = false var isAfterCreation = false var isShowCreatePost = false + let DELETED_POST_CELL_SIZE = 165.0 + let TEXT_POST_CELL_SIZE = 220.0 + let IMAGE_POST_CELL_SIZE = 430.0 var pullRefreshControl = UIRefreshControl() @@ -111,6 +114,7 @@ class EventDetailFeedViewController: UIViewController { func registerCellsNib() { ui_tableview.register(UINib(nibName: NeighborhoodPostTextCell.identifier, bundle: nil), forCellReuseIdentifier: NeighborhoodPostTextCell.identifier) ui_tableview.register(UINib(nibName: NeighborhoodPostImageCell.identifier, bundle: nil), forCellReuseIdentifier: NeighborhoodPostImageCell.identifier) + ui_tableview.register(UINib(nibName: NeighborhoodPostDeletedCell.identifier, bundle: nil), forCellReuseIdentifier: NeighborhoodPostDeletedCell.identifier) ui_tableview.register(UINib(nibName: EventDetailTopFullCell.identifier, bundle: nil), forCellReuseIdentifier: EventDetailTopFullCell.identifier) ui_tableview.register(UINib(nibName: EventDetailTopLightCell.identifier, bundle: nil), forCellReuseIdentifier: EventDetailTopLightCell.identifier) ui_tableview.register(UINib(nibName: NeighborhoodEmptyPostCell.identifier, bundle: nil), forCellReuseIdentifier: NeighborhoodEmptyPostCell.identifier) @@ -238,7 +242,6 @@ class EventDetailFeedViewController: UIViewController { } func getMorePosts() { - //TODO: a tester self.isLoading = true EventService.getEventPostsPaging(id: eventId, currentPage: currentPagingPage, per: itemsPerPage) { post, error in if let post = post { @@ -256,7 +259,6 @@ class EventDetailFeedViewController: UIViewController { } self.isLoading = false } - //TODO: Error ? } } @@ -264,7 +266,6 @@ class EventDetailFeedViewController: UIViewController { guard let messages = event?.posts else { return } - messagesNew.removeAll() messagesOld.removeAll() @@ -276,7 +277,7 @@ class EventDetailFeedViewController: UIViewController { messagesNew.append(post) } } - + hasNewAndOldSections = messagesOld.count > 0 && messagesNew.count > 0 } @@ -531,7 +532,10 @@ extension EventDetailFeedViewController: UITableViewDataSource, UITableViewDeleg } let postmessage:PostMessage = messagesOld[indexPath.row - 1] - let identifier = postmessage.isPostImage ? NeighborhoodPostImageCell.identifier : NeighborhoodPostTextCell.identifier + var identifier = postmessage.isPostImage ? NeighborhoodPostImageCell.identifier : NeighborhoodPostTextCell.identifier + if postmessage.status == "deleted" { + identifier = NeighborhoodPostDeletedCell.identifier + } let cell = tableView.dequeueReusableCell(withIdentifier: identifier, for: indexPath) as! NeighborhoodPostCell cell.populateCell(message: postmessage,delegate: self,currentIndexPath: indexPath, userId: postmessage.user?.sid) return cell @@ -557,16 +561,16 @@ extension EventDetailFeedViewController: UITableViewDataSource, UITableViewDeleg let postmessage:PostMessage = hasNewAndOldSections ? self.messagesNew[indexPath.row - countToAdd] : self.event!.posts![indexPath.row - countToAdd] - let identifier = postmessage.isPostImage ? NeighborhoodPostImageCell.identifier : NeighborhoodPostTextCell.identifier + var identifier = postmessage.isPostImage ? NeighborhoodPostImageCell.identifier : NeighborhoodPostTextCell.identifier + if postmessage.status == "deleted" { + identifier = NeighborhoodPostDeletedCell.identifier + } let cell = tableView.dequeueReusableCell(withIdentifier: identifier, for: indexPath) as! NeighborhoodPostCell cell.populateCell(message: postmessage,delegate: self,currentIndexPath: indexPath, userId: postmessage.user?.sid) return cell } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { - if indexPath.section == 0 && indexPath.row == 1 { - // return 214 - } return UITableView.automaticDimension } @@ -655,6 +659,10 @@ extension EventDetailFeedViewController: MJNavBackViewDelegate { //MARK: - EventDetailTopCellDelegate - extension EventDetailFeedViewController:EventDetailTopCellDelegate { + func showUser() { + + } + func showWebUrl(url: URL) { WebLinkManager.openUrl(url: url, openInApp: true, presenterViewController: self) } @@ -702,11 +710,12 @@ extension EventDetailFeedViewController:NeighborhoodPostCellDelegate { self.getDetailPost(eventId: self.eventId, parentPostId: postId) } - func signalPost(postId: Int) { + func signalPost(postId: Int, userId:Int) { if let navvc = UIStoryboard.init(name: StoryboardName.neighborhoodReport, bundle: nil).instantiateViewController(withIdentifier: "reportNavVC") as? UINavigationController, let vc = navvc.topViewController as? ReportGroupMainViewController { vc.eventId = eventId vc.postId = postId vc.parentDelegate = self + vc.userId = userId vc.signalType = .publication self.present(navvc, animated: true) } @@ -748,7 +757,6 @@ extension EventDetailFeedViewController:NeighborhoodPostCellDelegate { extension EventDetailFeedViewController:UpdateCommentCountDelegate { func updateCommentCount(parentCommentId: Int, nbComments: Int, currentIndexPathSelected:IndexPath?) { guard let _ = event?.posts else {return} - var i = 0 for _post in event!.posts! { if _post.uid == parentCommentId { @@ -781,6 +789,11 @@ extension EventDetailFeedViewController: UIScrollViewDelegate { } extension EventDetailFeedViewController:GroupDetailDelegate{ + func publicationDeleted() { + getEventDetail() + self.ui_tableview.reloadData() + } + func showMessage(signalType:GroupDetailSignalType) { let alertVC = MJAlertController() let buttonCancel = MJAlertButtonType(title: "OK".localized, titleStyle:ApplicationTheme.getFontCourantRegularNoir(size: 18, color: .white), bgColor: .appOrange, cornerRadius: -1) @@ -824,3 +837,10 @@ extension EventDetailFeedViewController{ } } } + + +enum TableIsOldAndNewPost { + case onlyOld + case newAndOld + case onlyNew +} diff --git a/entourage/Scenes/Events/EventDetailMessagesViewController.swift b/entourage/Scenes/Events/EventDetailMessagesViewController.swift index a3bd79d5b..99da0b17a 100644 --- a/entourage/Scenes/Events/EventDetailMessagesViewController.swift +++ b/entourage/Scenes/Events/EventDetailMessagesViewController.swift @@ -348,6 +348,11 @@ extension EventDetailMessagesViewController:MessageCellSignalDelegate { //MARK: - GroupDetailDelegate - extension EventDetailMessagesViewController:GroupDetailDelegate { + func publicationDeleted() { + getMessages() + self.ui_tableview.reloadData() + } + func showMessage(signalType:GroupDetailSignalType) { let alertVC = MJAlertController() let buttonCancel = MJAlertButtonType(title: "OK".localized, titleStyle:ApplicationTheme.getFontCourantRegularNoir(size: 18, color: .white), bgColor: .appOrange, cornerRadius: -1) diff --git a/entourage/Scenes/Events/EventMainHomeViewController.swift b/entourage/Scenes/Events/EventMainHomeViewController.swift index 6b6b7a257..a18472ee1 100644 --- a/entourage/Scenes/Events/EventMainHomeViewController.swift +++ b/entourage/Scenes/Events/EventMainHomeViewController.swift @@ -42,6 +42,7 @@ class EventMainHomeViewController: UIViewController { @IBOutlet weak var ui_lbl_empty_subtitle_event: UILabel! @IBOutlet weak var ui_lbl_empty_title_event: UILabel! + @IBOutlet weak var uiBtnDiscover: UIButton! @IBOutlet weak var ui_arrow_show_empty: UIImageView! @IBOutlet weak var ui_view_empty_discover: UIView! @IBOutlet weak var ui_lbl_empty_title_discover: UILabel! @@ -101,11 +102,9 @@ class EventMainHomeViewController: UIViewController { ui_tableview.register(UINib(nibName: EventListSectionCell.identifier, bundle: nil), forCellReuseIdentifier: EventListSectionCell.identifier) ui_tableview.register(UINib(nibName: EventListCell.identifier, bundle: nil), forCellReuseIdentifier: EventListCell.identifier) ui_tableview.register(UINib(nibName: EventListCell.EventlistMeIdentifier, bundle: nil), forCellReuseIdentifier: EventListCell.EventlistMeIdentifier) - + setMyFirst() setupEmptyViews() - setupViews() - //Notif for updating when create new Event NotificationCenter.default.addObserver(self, selector: #selector(updateFromCreate), name: NSNotification.Name(rawValue: kNotificationEventCreateEnd), object: nil) @@ -141,6 +140,7 @@ class EventMainHomeViewController: UIViewController { showEmptyView() } } + ui_tableview.reloadData() } deinit { @@ -262,6 +262,33 @@ class EventMainHomeViewController: UIViewController { } } + func getEventsDiscoveredForMyEvent(isReloadFromTab:Bool = false, reloadOther:Bool = false) { + + EventService.getAllEventsDiscover(currentPage: currentPageDiscover, per: numberOfItemsForWS, filters: currentFilter.getfiltersForWS()) { events, error in + IHProgressHUD.dismiss() + self.pullRefreshControl.endRefreshing() + + DispatchQueue.main.async { + if let events = events , events.count > 0 { + self.uiBtnDiscover.isHidden = false + self.ui_lbl_empty_subtitle_event.text = "event_no_event_but_discover".localized + self.uiBtnDiscover.setTitle("event_title_btn_discover_event".localized, for: .normal) + self.uiBtnDiscover.removeTarget(self, action: #selector(self.onClickCreate), for: .touchUpInside) + self.uiBtnDiscover.addTarget(self, action: #selector(self.onGoDiscover), for: .touchUpInside) + }else{ + self.uiBtnDiscover.isHidden = false + self.ui_lbl_empty_subtitle_event.text = "event_no_event_go_create".localized + self.uiBtnDiscover.setTitle("event_title_btn_create_event".localized, for: .normal) + self.uiBtnDiscover.removeTarget(self, action: #selector(self.onGoDiscover), for: .touchUpInside) + self.uiBtnDiscover.addTarget(self, action: #selector(self.onClickCreate), for: .touchUpInside) + } + + } + + } + } + + func getEventsDiscovered(isReloadFromTab:Bool = false, reloadOther:Bool = false) { if self.isLoading { return } @@ -343,6 +370,8 @@ class EventMainHomeViewController: UIViewController { @IBAction func action_myEvents(_ sender: Any?) { isEventSelected = true isfirstLoadingMyEvents = true + self.uiBtnDiscover.isHidden = false + if isEventSelected != currentSelectedIsEvent && myEventsExtracted.events.count == 0 { currentPageMy = 1 @@ -363,6 +392,7 @@ class EventMainHomeViewController: UIViewController { @IBAction func action_discover(_ sender: Any?) { isEventSelected = false + self.uiBtnDiscover.isHidden = true if isEventSelected != currentSelectedIsEvent && self.eventsDiscoveredExtracted.events.count == 0 { currentPageDiscover = 1 self.eventsDiscoveredExtracted.events.removeAll() @@ -396,14 +426,15 @@ class EventMainHomeViewController: UIViewController { } } - @IBAction func action_clear_filters(_ sender: Any) { - self.currentFilter.resetToDefault() - self.ui_location_filter.text = currentFilter.getFilterButtonString() - self.getEventsDiscovered(isReloadFromTab: false, reloadOther: false) - } +// @IBAction func action_clear_filters(_ sender: Any) { +// self.currentFilter.resetToDefault() +// self.ui_location_filter.text = currentFilter.getFilterButtonString() +// self.getEventsDiscovered(isReloadFromTab: false, reloadOther: false) +// } //MARK: - Methods - func changeTabSelection() { + getEventsDiscoveredForMyEvent() ui_view_empty.isHidden = true ui_arrow_show_empty.isHidden = true self.ui_view_empty_events.isHidden = true @@ -453,6 +484,7 @@ class EventMainHomeViewController: UIViewController { } func setupViews() { + ui_location_filter.setupFontAndColor(style: MJTextFontColorStyle(font: ApplicationTheme.getFontNunitoSemiBold(size: 13), color: .white)) ui_location_filter.text = currentFilter.getFilterButtonString() ui_label_title.text = "event_main_page_title".localized @@ -517,18 +549,50 @@ class EventMainHomeViewController: UIViewController { ui_title_bt_clear_filters.setupFontAndColor(style: ApplicationTheme.getFontBoutonBlanc()) ui_title_bt_clear_filters.text = "event_event_discover_clear_filters".localized + getEventsDiscoveredForMyEvent() + hideEmptyView() } + func configureEmptyViewButton(){ + self.uiBtnDiscover.titleEdgeInsets = UIEdgeInsets(top:4,left:8,bottom:4,right:8) + } + + @objc func onClickCreate(){ + AnalyticsLoggerManager.logEvent(name: Event_action_create) + let navVC = UIStoryboard.init(name: StoryboardName.eventCreate, bundle: nil).instantiateViewController(withIdentifier: "eventCreateVCMain") as! EventCreateMainViewController + navVC.parentController = self.tabBarController + navVC.modalPresentationStyle = .fullScreen + self.tabBarController?.present(navVC, animated: true) + + } + @objc func onGoDiscover(){ + isEventSelected = false + if isEventSelected != currentSelectedIsEvent && self.eventsDiscoveredExtracted.events.count == 0 { + currentPageDiscover = 1 + self.eventsDiscoveredExtracted.events.removeAll() + getEventsDiscovered() + } + currentSelectedIsEvent = false + isLoading = false + changeTabSelection() + self.ui_tableview.reloadData() + + if self.eventsDiscoveredExtracted.events.count > 0 { + self.gotoTop() + } + } + func showEmptyView() { if isEventSelected { + configureEmptyViewButton() self.ui_view_empty.isHidden = false - ui_arrow_show_empty.isHidden = false + ui_arrow_show_empty.isHidden = true//false self.ui_view_empty_events.isHidden = false self.ui_view_empty_discover.isHidden = true } else { - + configureEmptyViewButton() self.ui_view_empty.isHidden = false self.ui_view_empty_events.isHidden = true self.ui_view_empty_discover.isHidden = false @@ -537,7 +601,7 @@ class EventMainHomeViewController: UIViewController { //TODO: check search if currentFilter.filterType != .profile || currentFilter.radius != UserDefaults.currentUser?.radiusDistance { - ui_view_bt_clear_filters.isHidden = false + ui_view_bt_clear_filters.isHidden = true//false ui_lbl_empty_title_discover.text = "event_event_discover_empty_search_title".localized ui_lbl_empty_subtitle_discover.text = "event_event_discover_empty_search_subtitle".localized } @@ -648,36 +712,33 @@ extension EventMainHomeViewController: UITableViewDataSource, UITableViewDelegat } } - func scrollViewDidScroll( _ scrollView: UIScrollView) { + func scrollViewDidScroll(_ scrollView: UIScrollView) { + let yImage = imageNormalHeight - (scrollView.contentOffset.y + imageNormalHeight) + let diffImage = maxViewHeight - maxImageHeight + let heightImage = min(max(yImage - diffImage, minImageHeight), maxImageHeight) + ui_image.alpha = heightImage / maxImageHeight + + let yView = viewNormalHeight - (scrollView.contentOffset.y + viewNormalHeight) + let heightView = min(max(yView, minViewHeight), maxViewHeight) + ui_view_height_constraint.constant = heightView + + // Éviter de calculer et repositionner les vues inutilement. + if heightView <= minViewHeight { + ui_label_title.font = ApplicationTheme.getFontQuickSandBold(size: minLabelFont) + return + } + + ui_image.isHidden = false + + let yLabel = labelNormalConstraintBottom - (scrollView.contentOffset.y + labelNormalConstraintBottom) + let heightLabel = min(max(yLabel, minLabelBottomConstraint), maxLabelBottomConstraint) + ui_constraint_bottom_label.constant = heightLabel + + let yLabelFont = labelNormalFontHeight - (scrollView.contentOffset.y + labelNormalFontHeight) + let heightLabelFont = min(max((minLabelFont * yLabelFont) / minViewHeight, minLabelFont), maxLabelFont) + ui_label_title.font = ApplicationTheme.getFontQuickSandBold(size: heightLabelFont) + UIView.animate(withDuration: 0) { - - let yImage = self.imageNormalHeight - (scrollView.contentOffset.y+self.imageNormalHeight) - let diffImage = (self.maxViewHeight - self.maxImageHeight) - let heightImage = min(max (yImage - diffImage,self.minImageHeight),self.maxImageHeight) - - self.ui_image.alpha = heightImage / self.maxImageHeight - - let yView = self.viewNormalHeight - (scrollView.contentOffset.y + self.viewNormalHeight) - let heightView = min(max (yView,self.minViewHeight),self.maxViewHeight) - self.ui_view_height_constraint.constant = heightView - - //On évite de calculer et repositionner les vues inutiliement. - if self.ui_view_height_constraint.constant <= self.minViewHeight { - self.ui_label_title.font = ApplicationTheme.getFontQuickSandBold(size: self.minLabelFont) - return - } - - self.ui_image.isHidden = false - - let yLabel = self.labelNormalConstraintBottom - (scrollView.contentOffset.y + self.labelNormalConstraintBottom) - let heightLabel = min(max (yLabel,self.minLabelBottomConstraint),self.maxLabelBottomConstraint) - self.ui_constraint_bottom_label.constant = heightLabel - - let yLabelFont = self.labelNormalFontHeight - (scrollView.contentOffset.y + self.labelNormalFontHeight) - let heightCalculated = (self.minLabelFont * yLabelFont) / self.minViewHeight - let heightLabelFont = min(max (heightCalculated,self.minLabelFont),self.maxLabelFont) - self.ui_label_title.font = ApplicationTheme.getFontQuickSandBold(size: heightLabelFont) - self.view.layoutIfNeeded() } } diff --git a/entourage/Scenes/Events/EventParamsViewController.swift b/entourage/Scenes/Events/EventParamsViewController.swift index 74c99d3ca..d14873d1f 100644 --- a/entourage/Scenes/Events/EventParamsViewController.swift +++ b/entourage/Scenes/Events/EventParamsViewController.swift @@ -279,6 +279,10 @@ extension EventParamsViewController: UITableViewDataSource, UITableViewDelegate //MARK: - GroupDetailDelegate - extension EventParamsViewController: GroupDetailDelegate { + func publicationDeleted() { + self.ui_tableview.reloadData() + } + func showMessage(signalType:GroupDetailSignalType) { let alertVC = MJAlertController() let buttonCancel = MJAlertButtonType(title: "OK".localized, titleStyle:ApplicationTheme.getFontCourantRegularNoir(size: 18, color: .white), bgColor: .appOrange, cornerRadius: -1) diff --git a/entourage/Scenes/Groups - Neighborhoods/Cells/Detail/NeighborhoodPostCell.swift b/entourage/Scenes/Groups - Neighborhoods/Cells/Detail/NeighborhoodPostCell.swift index 8a06ff73c..2190156d4 100644 --- a/entourage/Scenes/Groups - Neighborhoods/Cells/Detail/NeighborhoodPostCell.swift +++ b/entourage/Scenes/Groups - Neighborhoods/Cells/Detail/NeighborhoodPostCell.swift @@ -21,11 +21,14 @@ class NeighborhoodPostCell: UITableViewCell { @IBOutlet weak var ui_image_post: UIImageView! + @IBOutlet weak var ui_view_comment_post: UIView! @IBOutlet weak var ui_view_comment: UIView! @IBOutlet weak var ui_view_bt_send: UIView! @IBOutlet weak var ui_lb_chat: UILabel! + @IBOutlet weak var ui_label_ambassador: UILabel! + @IBOutlet weak var ui_btn_signal_post: UIButton! class var identifier: String { @@ -51,21 +54,20 @@ class NeighborhoodPostCell: UITableViewCell { ui_comments_nb.setupFontAndColor(style: ApplicationTheme.getFontChampInput()) ui_image_post?.layer.cornerRadius = 8 - - ui_view_bt_send.layer.cornerRadius = ui_view_bt_send.frame.height / 2 - ui_view_comment.layer.cornerRadius = ui_view_comment.frame.height / 2 - ui_view_comment.layer.borderColor = UIColor.appOrange.cgColor - ui_view_comment.layer.borderWidth = 1 - ui_lb_chat.setupFontAndColor(style: ApplicationTheme.getFontCourantRegularOrange()) - - ui_lb_chat.text = "comment_post".localized - - ui_btn_signal_post.addTarget(self, action: #selector(signalClicked), for: .touchUpInside) - + if ui_view_comment != nil { + ui_view_bt_send.layer.cornerRadius = ui_view_bt_send.frame.height / 2 + ui_view_comment.layer.cornerRadius = ui_view_comment.frame.height / 2 + ui_view_comment.layer.borderColor = UIColor.appOrange.cgColor + ui_view_comment.layer.borderWidth = 1 + ui_lb_chat.setupFontAndColor(style: ApplicationTheme.getFontCourantRegularOrange()) + ui_lb_chat.text = "comment_post".localized + ui_btn_signal_post.addTarget(self, action: #selector(signalClicked), for: .touchUpInside) + } + } @objc func signalClicked(){ - self.delegate?.signalPost(postId: self.postId) + self.delegate?.signalPost(postId: self.postId, userId: self.userId!) } func populateCell(message:PostMessage, delegate:NeighborhoodPostCellDelegate, currentIndexPath:IndexPath?, userId:Int?) { @@ -79,6 +81,19 @@ class NeighborhoodPostCell: UITableViewCell { delegate.showWebviewUrl(url: url) } } + if let _status = message.status { + if _status == "deleted" { + ui_comment.text = "deleted_post_text".localized + ui_comment.textColor = UIColor.appGrey151 + ui_btn_signal_post.isHidden = true + }else{ + ui_comment.text = message.content + ui_comment.textColor = .black + ui_btn_signal_post.isHidden = false + + } + } + self.currentIndexPath = currentIndexPath postId = message.uid self.userId = userId @@ -110,6 +125,29 @@ class NeighborhoodPostCell: UITableViewCell { else { ui_image_post?.image = UIImage.init(named: "placeholder_post") } + + var tagString = "" + if let _user = message.user { + if _user.isAdmin() { + tagString = tagString + "title_is_admin".localized + " •" + } + if _user.isAmbassador() { + tagString = tagString + "title_is_ambassador".localized + " •" + } + if let _partner = _user.partner { + tagString = tagString + _partner.name + " •" + } + } + if tagString.isEmpty { + ui_label_ambassador.isHidden = true + }else{ + if tagString.last == "•" { + tagString.removeLast() + } + ui_label_ambassador.isHidden = false + ui_label_ambassador.text = tagString + } + } @IBAction func action_show_comments(_ sender: Any) { @@ -133,7 +171,7 @@ protocol NeighborhoodPostCellDelegate: AnyObject { func showMessages(addComment:Bool, postId:Int, indexPathSelected:IndexPath?, postMessage:PostMessage?) func showUser(userId:Int?) func showImage(imageUrl:URL?, postId:Int) - func signalPost(postId:Int) + func signalPost(postId:Int, userId:Int) func showWebviewUrl(url:URL) } @@ -145,3 +183,6 @@ class NeighborhoodPostTextCell: NeighborhoodPostCell { class NeighborhoodPostImageCell: NeighborhoodPostCell { // override class var identifier: String {return self.description()} } +class NeighborhoodPostDeletedCell:NeighborhoodPostCell{ + +} diff --git a/entourage/Scenes/Groups - Neighborhoods/Cells/Detail/NeighborhoodPostDeletedCell.xib b/entourage/Scenes/Groups - Neighborhoods/Cells/Detail/NeighborhoodPostDeletedCell.xib new file mode 100644 index 000000000..0ce65de52 --- /dev/null +++ b/entourage/Scenes/Groups - Neighborhoods/Cells/Detail/NeighborhoodPostDeletedCell.xib @@ -0,0 +1,200 @@ + + + + + + + + + + + + + NunitoSans-Light + + + NunitoSans-Regular + + + Quicksand-Bold + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/entourage/Scenes/Groups - Neighborhoods/Cells/Detail/NeighborhoodPostImageCell.xib b/entourage/Scenes/Groups - Neighborhoods/Cells/Detail/NeighborhoodPostImageCell.xib index 4e29d3804..67f6cfd9b 100644 --- a/entourage/Scenes/Groups - Neighborhoods/Cells/Detail/NeighborhoodPostImageCell.xib +++ b/entourage/Scenes/Groups - Neighborhoods/Cells/Detail/NeighborhoodPostImageCell.xib @@ -33,14 +33,14 @@ - + - - + + - + - + - + + + - + - + @@ -183,14 +192,14 @@ Nous sommes prêt pour les beaux jours ! :-) - + - + + + - + @@ -75,7 +82,7 @@ - + - + @@ -214,7 +221,6 @@ Nous sommes prêt pour les beaux jours ! :-) - @@ -222,6 +228,7 @@ Nous sommes prêt pour les beaux jours ! :-) + @@ -255,13 +262,15 @@ Nous sommes prêt pour les beaux jours ! :-) + + - + diff --git a/entourage/Scenes/Groups - Neighborhoods/NeighborhoodDetailMessagesViewController.swift b/entourage/Scenes/Groups - Neighborhoods/NeighborhoodDetailMessagesViewController.swift index e51be9b25..a39289a4e 100644 --- a/entourage/Scenes/Groups - Neighborhoods/NeighborhoodDetailMessagesViewController.swift +++ b/entourage/Scenes/Groups - Neighborhoods/NeighborhoodDetailMessagesViewController.swift @@ -226,6 +226,7 @@ class NeighborhoodDetailMessagesViewController: UIViewController { vc.postId = parentCommentId vc.parentDelegate = self vc.signalType = .publication + self.present(navvc, animated: true) } } @@ -347,6 +348,11 @@ extension NeighborhoodDetailMessagesViewController:MessageCellSignalDelegate { //MARK: - GroupDetailDelegate - extension NeighborhoodDetailMessagesViewController:GroupDetailDelegate { + func publicationDeleted() { + getMessages() + self.ui_tableview.reloadData() + } + func showMessage(signalType:GroupDetailSignalType) { let alertVC = MJAlertController() let buttonCancel = MJAlertButtonType(title: "OK".localized, titleStyle:ApplicationTheme.getFontCourantRegularNoir(size: 18, color: .white), bgColor: .appOrange, cornerRadius: -1) diff --git a/entourage/Scenes/Groups - Neighborhoods/NeighborhoodDetailViewController.swift b/entourage/Scenes/Groups - Neighborhoods/NeighborhoodDetailViewController.swift index 0eeae723e..6f779a34a 100644 --- a/entourage/Scenes/Groups - Neighborhoods/NeighborhoodDetailViewController.swift +++ b/entourage/Scenes/Groups - Neighborhoods/NeighborhoodDetailViewController.swift @@ -45,6 +45,13 @@ class NeighborhoodDetailViewController: UIViewController { var isAfterCreation = true var isShowCreatePost = false + let DELETED_POST_CELL_SIZE = 165.0 + let TEXT_POST_CELL_SIZE = 220.0 + let IMAGE_POST_CELL_SIZE = 430.0 + //226 deleted message + //470 text post message + //165 image post message + var pullRefreshControl = UIRefreshControl() override func viewDidLoad() { @@ -87,6 +94,7 @@ class NeighborhoodDetailViewController: UIViewController { func registerCellsNib() { ui_tableview.register(UINib(nibName: NeighborhoodPostTextCell.identifier, bundle: nil), forCellReuseIdentifier: NeighborhoodPostTextCell.identifier) ui_tableview.register(UINib(nibName: NeighborhoodPostImageCell.identifier, bundle: nil), forCellReuseIdentifier: NeighborhoodPostImageCell.identifier) + ui_tableview.register(UINib(nibName: NeighborhoodPostDeletedCell.identifier, bundle: nil), forCellReuseIdentifier: NeighborhoodPostDeletedCell.identifier) ui_tableview.register(UINib(nibName: NeighborhoodDetailTopCell.identifier, bundle: nil), forCellReuseIdentifier: NeighborhoodDetailTopCell.identifier) ui_tableview.register(UINib(nibName: NeighborhoodDetailTopMemberCell.identifier, bundle: nil), forCellReuseIdentifier: NeighborhoodDetailTopMemberCell.identifier) ui_tableview.register(UINib(nibName: NeighborhoodEmptyPostCell.identifier, bundle: nil), forCellReuseIdentifier: NeighborhoodEmptyPostCell.identifier) @@ -490,7 +498,10 @@ extension NeighborhoodDetailViewController: UITableViewDataSource, UITableViewDe } let postmessage:PostMessage = messagesOld[indexPath.row - 1] - let identifier = postmessage.isPostImage ? NeighborhoodPostImageCell.identifier : NeighborhoodPostTextCell.identifier + var identifier = postmessage.isPostImage ? NeighborhoodPostImageCell.identifier : NeighborhoodPostTextCell.identifier + if postmessage.status == "deleted" { + identifier = NeighborhoodPostDeletedCell.identifier + } let cell = tableView.dequeueReusableCell(withIdentifier: identifier, for: indexPath) as! NeighborhoodPostCell cell.populateCell(message: postmessage,delegate: self,currentIndexPath: indexPath, userId: postmessage.user?.sid) return cell @@ -516,16 +527,16 @@ extension NeighborhoodDetailViewController: UITableViewDataSource, UITableViewDe let postmessage:PostMessage = hasNewAndOldSections ? self.messagesNew[indexPath.row - countToAdd] : self.neighborhood!.messages![indexPath.row - countToAdd] - let identifier = postmessage.isPostImage ? NeighborhoodPostImageCell.identifier : NeighborhoodPostTextCell.identifier + var identifier = postmessage.isPostImage ? NeighborhoodPostImageCell.identifier : NeighborhoodPostTextCell.identifier + if postmessage.status == "deleted" { + identifier = NeighborhoodPostDeletedCell.identifier + } let cell = tableView.dequeueReusableCell(withIdentifier: identifier, for: indexPath) as! NeighborhoodPostCell cell.populateCell(message: postmessage,delegate: self,currentIndexPath: indexPath, userId: postmessage.user?.sid) return cell } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { - if indexPath.section == 0 && indexPath.row == 1 { - // return 214 - } return UITableView.automaticDimension } @@ -592,11 +603,12 @@ extension NeighborhoodDetailViewController:NeighborhoodPostCellDelegate { getDetailPost(neighborhoodId: self.neighborhoodId, parentPostId: postId) } - func signalPost(postId: Int) { + func signalPost(postId: Int, userId:Int) { if let navvc = UIStoryboard.init(name: StoryboardName.neighborhoodReport, bundle: nil).instantiateViewController(withIdentifier: "reportNavVC") as? UINavigationController, let vc = navvc.topViewController as? ReportGroupMainViewController { vc.groupId = neighborhoodId vc.postId = postId vc.parentDelegate = self + vc.userId = userId vc.signalType = .publication self.present(navvc, animated: true) } @@ -723,6 +735,11 @@ extension NeighborhoodDetailViewController: UIScrollViewDelegate { } } extension NeighborhoodDetailViewController:GroupDetailDelegate{ + func publicationDeleted() { + getNeighborhoodDetail() + self.ui_tableview.reloadData() + } + func showMessage(signalType:GroupDetailSignalType) { let alertVC = MJAlertController() let buttonCancel = MJAlertButtonType(title: "OK".localized, titleStyle:ApplicationTheme.getFontCourantRegularNoir(size: 18, color: .white), bgColor: .appOrange, cornerRadius: -1) diff --git a/entourage/Scenes/Groups - Neighborhoods/NeighborhoodHomeViewController.swift b/entourage/Scenes/Groups - Neighborhoods/NeighborhoodHomeViewController.swift index 25983366f..8b4b0d075 100644 --- a/entourage/Scenes/Groups - Neighborhoods/NeighborhoodHomeViewController.swift +++ b/entourage/Scenes/Groups - Neighborhoods/NeighborhoodHomeViewController.swift @@ -430,6 +430,7 @@ class NeighborhoodHomeViewController: UIViewController { } func setupViews() { + self.setMyFirst() ui_label_title.text = "neighborhood_main_page_title".localized ui_label_groups.text = "neighborhood_main_page_button_myGroups".localized ui_label_discover.text = "neighborhood_main_page_button_discover".localized diff --git a/entourage/Scenes/Groups - Neighborhoods/NeighborhoodParamsGroupViewController.swift b/entourage/Scenes/Groups - Neighborhoods/NeighborhoodParamsGroupViewController.swift index 77929f74e..04f1babe8 100644 --- a/entourage/Scenes/Groups - Neighborhoods/NeighborhoodParamsGroupViewController.swift +++ b/entourage/Scenes/Groups - Neighborhoods/NeighborhoodParamsGroupViewController.swift @@ -169,6 +169,10 @@ extension NeighborhoodParamsGroupViewController: UITableViewDataSource, UITableV //MARK: - GroupDetailDelegate - extension NeighborhoodParamsGroupViewController: GroupDetailDelegate { + func publicationDeleted() { + self.ui_tableview.reloadData() + } + func showMessage(signalType:GroupDetailSignalType) { let alertVC = MJAlertController() let buttonCancel = MJAlertButtonType(title: "OK".localized, titleStyle:ApplicationTheme.getFontCourantRegularNoir(size: 18, color: .white), bgColor: .appOrange, cornerRadius: -1) diff --git a/entourage/Scenes/Groups - Neighborhoods/Signal/ReportGroupChoosePageViewController.swift b/entourage/Scenes/Groups - Neighborhoods/Signal/ReportGroupChoosePageViewController.swift new file mode 100644 index 000000000..bd82b76a2 --- /dev/null +++ b/entourage/Scenes/Groups - Neighborhoods/Signal/ReportGroupChoosePageViewController.swift @@ -0,0 +1,131 @@ +// +// ReportGroupChoosePageViewController.swift +// entourage +// +// Created by Clement entourage on 22/02/2023. +// + +import Foundation +import UIKit + +class ReportGroupChoosePageViewController:UIViewController { + + @IBOutlet weak var ui_tableview: UITableView! + + //Variable + var table_dto = [ReportCellType]() + var event:Event? = nil + var group:Neighborhood? = nil + var signalType:GroupDetailSignalType = .group + + var eventId:Int? = nil + var groupId:Int? = nil + var postId:Int? = nil + var actionId:Int? = nil + var conversationId:Int? = nil + var userId:Int = 0 + + + var reportVc:ReportGroupViewController? = nil + weak var delegate:ReportGroupPageDelegate? = nil + + override func viewDidLoad() { + + ui_tableview.register(ReportChooseViewCell.nib, forCellReuseIdentifier: "ReportChooseViewCell") + ui_tableview.delegate = self + ui_tableview.dataSource = self + ui_tableview.separatorStyle = .none + loadDTO() + } + + func loadDTO(){ + if checkIsMe() { + table_dto.append(.suppress) + }else{ + table_dto.append(.report) + } + ui_tableview.reloadData() + } + func checkIsMe() -> Bool{ + if let _myId = UserDefaults.currentUser?.uuid{ + if _myId == String(self.userId) { + return true + }else{ + return false + } + }else{ + return false + } + } +} + +extension ReportGroupChoosePageViewController:UITableViewDelegate,UITableViewDataSource { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return table_dto.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + + switch(table_dto[indexPath.row]){ + case .report: + if let cell = ui_tableview.dequeueReusableCell(withIdentifier: "ReportChooseViewCell", for: indexPath ) as? ReportChooseViewCell { + cell.selectionStyle = .none + cell.populate(type: table_dto[indexPath.row]) + return cell + } + + case .suppress: + if let cell = ui_tableview.dequeueReusableCell(withIdentifier: "ReportChooseViewCell", for: indexPath ) as? ReportChooseViewCell { + cell.selectionStyle = .none + cell.populate(type: table_dto[indexPath.row]) + return cell + } + } + return UITableViewCell() + } + + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + switch table_dto[indexPath.row]{ + case .report: + delegate?.chooseReport() + case .suppress: + showAlert() + } + } + + func showAlert(){ + AnalyticsLoggerManager.logEvent(name: Click_delete_post) + let alertVC = MJAlertController() + let buttonCancel = MJAlertButtonType(title: "eventCreatePopCloseBackCancel".localized, titleStyle:ApplicationTheme.getFontBoutonBlanc(size: 15, color: .orange), bgColor: .appOrangeLight_70, cornerRadius: -1) + let buttonValidate = MJAlertButtonType(title: "supress_button_title".localized, titleStyle:ApplicationTheme.getFontBoutonBlanc(size: 15, color: .white), bgColor: .appOrange, cornerRadius: -1) + alertVC.configureAlert(alertTitle: "supress_alert_title".localized, message: "supress_alert_text".localized, buttonrightType: buttonValidate, buttonLeftType: buttonCancel, titleStyle: ApplicationTheme.getFontCourantBoldOrange(), messageStyle: ApplicationTheme.getFontCourantRegularNoir(), mainviewBGColor: .white, mainviewRadius: 35, isButtonCloseHidden: true) + alertVC.delegate = self + alertVC.show() + } + + +} + +extension ReportGroupChoosePageViewController: MJAlertControllerDelegate { + func validateLeftButton(alertTag: MJAlertTAG) { + + } + func validateRightButton(alertTag: MJAlertTAG) { + AnalyticsLoggerManager.logEvent(name: Delete_post) + guard let _postId = postId else { + return + } + if let _groupId = groupId { + NeighborhoodService.deletePostMessage(groupId: _groupId, messageId: _postId) { error in + if error == nil { + self.delegate?.closeMainForDelete() + } + } + } + if let _eventId = eventId { + EventService.deletePostMessage(eventId: _eventId, messageId: _postId) { error in + self.delegate?.closeMainForDelete() + } + } + } +} diff --git a/entourage/Scenes/Groups - Neighborhoods/Signal/ReportGroupMainViewController.swift b/entourage/Scenes/Groups - Neighborhoods/Signal/ReportGroupMainViewController.swift index 69c15d5ea..f2f352666 100644 --- a/entourage/Scenes/Groups - Neighborhoods/Signal/ReportGroupMainViewController.swift +++ b/entourage/Scenes/Groups - Neighborhoods/Signal/ReportGroupMainViewController.swift @@ -17,6 +17,7 @@ class ReportGroupMainViewController: BasePopViewController { var groupId:Int? = nil var postId:Int? = nil var actionId:Int? = nil + var userId:Int? = 0 var conversationId:Int? = nil weak var parentDelegate:GroupDetailDelegate? = nil @@ -24,25 +25,8 @@ class ReportGroupMainViewController: BasePopViewController { override func viewDidLoad() { super.viewDidLoad() - var _title = "report_group_title".localized - switch signalType { - case .group: - _title = "report_group_title".localized - case .comment: - _title = "report_comment_title".localized - case .publication: - _title = "report_publication_title".localized - case .event: - _title = "report_event_title".localized - case .actionContrib: - _title = "report_contrib_title".localized - case .actionSolicitation: - _title = "report_solicitation_title".localized - case .conversation: - _title = "report_conversation_title".localized - } - - ui_top_view.populateView(title: _title, titleFont: ApplicationTheme.getFontQuickSandBold(size: 15), titleColor: .black, delegate: self, isClose: true) + ui_top_view.populateView(title: "parameter_publication".localized, titleFont: ApplicationTheme.getFontQuickSandBold(size: 15), titleColor: .black, delegate: self, isClose: true) + } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { @@ -54,8 +38,10 @@ class ReportGroupMainViewController: BasePopViewController { vc.groupId = groupId vc.postId = postId vc.eventId = eventId + vc.userId = userId vc.actionId = actionId vc.conversationId = conversationId + vc.titleDelegate = self } } } @@ -70,6 +56,7 @@ extension ReportGroupMainViewController: MJNavBackViewDelegate { //MARK: - Protocol UserProfileDetailDelegate - protocol GroupDetailDelegate: AnyObject { func showMessage(signalType:GroupDetailSignalType) + func publicationDeleted() } enum GroupDetailSignalType { @@ -81,3 +68,31 @@ enum GroupDetailSignalType { case actionSolicitation case conversation } + +protocol TitleDelegate{ + func setTitleForSignal() + +} + +extension ReportGroupMainViewController : TitleDelegate{ + func setTitleForSignal() { + var _title = "report_group_title".localized + switch signalType { + case .group: + _title = "report_group_title".localized + case .comment: + _title = "report_comment_title".localized + case .publication: + _title = "report_publication_title".localized + case .event: + _title = "report_event_title".localized + case .actionContrib: + _title = "report_contrib_title".localized + case .actionSolicitation: + _title = "report_solicitation_title".localized + case .conversation: + _title = "report_conversation_title".localized + } + ui_top_view.populateView(title: _title, titleFont: ApplicationTheme.getFontQuickSandBold(size: 15), titleColor: .black, delegate: self, isClose: true) + } +} diff --git a/entourage/Scenes/Groups - Neighborhoods/Signal/ReportGroupPageViewController.swift b/entourage/Scenes/Groups - Neighborhoods/Signal/ReportGroupPageViewController.swift index 104b0ea31..f457caac5 100644 --- a/entourage/Scenes/Groups - Neighborhoods/Signal/ReportGroupPageViewController.swift +++ b/entourage/Scenes/Groups - Neighborhoods/Signal/ReportGroupPageViewController.swift @@ -4,7 +4,7 @@ // // Created by Jerome on 05/04/2022. // - +import Foundation import UIKit class ReportGroupPageViewController: UIPageViewController { @@ -17,14 +17,17 @@ class ReportGroupPageViewController: UIPageViewController { var groupId:Int? = nil var postId:Int? = nil var actionId:Int? = nil + var userId:Int? = nil var conversationId:Int? = nil + var haveChosen = false + var titleDelegate:TitleDelegate? = nil var reportVc:ReportGroupViewController? = nil + var chooseVc:ReportGroupChoosePageViewController? = nil weak var parentDelegate:GroupDetailDelegate? = nil override func viewDidLoad() { super.viewDidLoad() - self.isPagingEnabled = false reportVc = viewController(isSend:false) as? ReportGroupViewController @@ -32,8 +35,15 @@ class ReportGroupPageViewController: UIPageViewController { guard let reportVc = reportVc else { return } - - setViewControllers([reportVc], direction: .forward, animated: true) + chooseVc = storyboard?.instantiateViewController(withIdentifier: "reportChooseGroupVC") as? ReportGroupChoosePageViewController + chooseVc?.delegate = self + chooseVc?.postId = postId + chooseVc?.groupId = groupId + chooseVc?.eventId = self.eventId + if let _userid = self.userId { + chooseVc?.userId = _userid + } + setViewControllers([chooseVc!], direction: .forward, animated: true) } func viewController(isSend:Bool) -> UIViewController? { @@ -53,6 +63,23 @@ class ReportGroupPageViewController: UIPageViewController { //MARK: - ReportUserPageDelegate - extension ReportGroupPageViewController: ReportGroupPageDelegate { + func chooseReport() { + haveChosen = true + self.titleDelegate?.setTitleForSignal() + setViewControllers([reportVc!], direction: .forward, animated: true) + } + + + func chooseType(){ + if !haveChosen { + if chooseVc == nil { + chooseVc = storyboard?.instantiateViewController(withIdentifier: "reportChooseGroupVC") as? ReportGroupChoosePageViewController + setViewControllers([chooseVc!], direction: .forward, animated: true) + } + } + } + + func goNext(tags:Tags) { if let sendVc = viewController(isSend: true) as? ReportGroupSendViewController { sendVc.tagsignals = tags @@ -78,6 +105,10 @@ extension ReportGroupPageViewController: ReportGroupPageDelegate { self.parentDelegate?.showMessage(signalType: signalType) self.parent?.dismiss(animated: true) } + func closeMainForDelete() { + self.parentDelegate?.publicationDeleted() + self.parent?.dismiss(animated: true) + } } //MARK: - Protocol ReportUserPageDelegate - @@ -85,4 +116,6 @@ protocol ReportGroupPageDelegate: AnyObject { func goBack() func goNext(tags:Tags) func closeMain() + func closeMainForDelete() + func chooseReport() } diff --git a/entourage/Scenes/Groups - Neighborhoods/Signal/reportChooseCells/HeaderReportView.swift b/entourage/Scenes/Groups - Neighborhoods/Signal/reportChooseCells/HeaderReportView.swift new file mode 100644 index 000000000..5f55d748d --- /dev/null +++ b/entourage/Scenes/Groups - Neighborhoods/Signal/reportChooseCells/HeaderReportView.swift @@ -0,0 +1,14 @@ +// +// HeaderReportView.swift +// entourage +// +// Created by Clement entourage on 01/03/2023. +// + +import Foundation + +class HeaderReportView:UIView { + + + +} diff --git a/entourage/Scenes/Groups - Neighborhoods/Signal/reportChooseCells/HeaderReportView.xib b/entourage/Scenes/Groups - Neighborhoods/Signal/reportChooseCells/HeaderReportView.xib new file mode 100644 index 000000000..502df578e --- /dev/null +++ b/entourage/Scenes/Groups - Neighborhoods/Signal/reportChooseCells/HeaderReportView.xib @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + NunitoSans-Bold + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/entourage/Scenes/Groups - Neighborhoods/Signal/reportChooseCells/ReportChooseViewCell.swift b/entourage/Scenes/Groups - Neighborhoods/Signal/reportChooseCells/ReportChooseViewCell.swift new file mode 100644 index 000000000..a8b10eedf --- /dev/null +++ b/entourage/Scenes/Groups - Neighborhoods/Signal/reportChooseCells/ReportChooseViewCell.swift @@ -0,0 +1,55 @@ +// +// ReportChooseViewCell.swift +// entourage +// +// Created by Clement entourage on 27/02/2023. +// + +import Foundation +import UIKit + +enum ReportCellType { + case report + case suppress +} + +class ReportChooseViewCell:UITableViewCell { + //OUTLET + @IBOutlet weak var ui_image: UIImageView? + @IBOutlet weak var ui_title: UILabel? + @IBOutlet weak var ui_subtitle: UILabel? + //VARIABLE + var type:ReportCellType = .report + + static var nib: UINib { + return UINib(nibName: "ReportChooseViewCell", bundle: nil) + } + + override func awakeFromNib() { + super.awakeFromNib() + ui_image?.image = UIImage(named: "ic_report") + ui_title?.text = "report_post_cell_title".localized + ui_subtitle?.text = "report_post_cell_subtitle".localized + } + + func populate(type:ReportCellType){ + self.type = type + switch(type) { + case .report: + ui_image?.image = UIImage(named: "ic_report") + ui_title?.text = "report_post_cell_title".localized + ui_subtitle?.text = "report_post_cell_subtitle".localized + case .suppress: + ui_image?.image = UIImage(named: "ic_supress") + ui_title?.text = "suppress_post_cell_title".localized + ui_subtitle?.text = "suppress_post_cell_subtitle".localized + } + } + + func populateForTest(){ + ui_image?.image = UIImage(named: "ic_supress") + ui_title?.text = "suppress_post_cell_title".localized + ui_subtitle?.text = "suppress_post_cell_subtitle".localized + } + +} diff --git a/entourage/Scenes/Groups - Neighborhoods/Signal/reportChooseCells/ReportChooseViewCell.xib b/entourage/Scenes/Groups - Neighborhoods/Signal/reportChooseCells/ReportChooseViewCell.xib new file mode 100644 index 000000000..2abad0124 --- /dev/null +++ b/entourage/Scenes/Groups - Neighborhoods/Signal/reportChooseCells/ReportChooseViewCell.xib @@ -0,0 +1,75 @@ + + + + + + + + + + + + NunitoSans-Bold + + + NunitoSans-Regular + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/entourage/Settings/Analytics_Keys.swift b/entourage/Settings/Analytics_Keys.swift index 3994c2a6d..e5220c31b 100644 --- a/entourage/Settings/Analytics_Keys.swift +++ b/entourage/Settings/Analytics_Keys.swift @@ -225,3 +225,8 @@ let Onboard_name = "View__Onboarding__InputNames" let Onboard_code = "View__Onboarding__InputCode" let Onboard_profile = "View__Onboarding__InputProfile" let Onboard_end = "View__Onboarding__Confirmation" + +//Suppress post +let Delete_post = "View__DeletePostPop" +let Click_delete_post = "Clic__DeletePostPop__Delete" + diff --git a/entourage/Storyboards/Event.storyboard b/entourage/Storyboards/Event.storyboard index e0979c603..c39b6482e 100644 --- a/entourage/Storyboards/Event.storyboard +++ b/entourage/Storyboards/Event.storyboard @@ -1,9 +1,9 @@ - + - + @@ -44,10 +44,10 @@ - + - + - + - - - + @@ -210,82 +230,82 @@ - + - - - - - - - - - - - + + + + + + + + + + - + - - - - - - - - - - - + + + + + + + + + + @@ -310,9 +330,11 @@ + + @@ -397,7 +419,7 @@ - + @@ -407,7 +429,7 @@ - + @@ -422,6 +444,7 @@ + @@ -437,7 +460,7 @@ - + @@ -1822,6 +1845,9 @@ + + + diff --git a/entourage/Storyboards/Main.storyboard b/entourage/Storyboards/Main.storyboard index d09775c48..40c1d2af1 100644 --- a/entourage/Storyboards/Main.storyboard +++ b/entourage/Storyboards/Main.storyboard @@ -859,7 +859,7 @@ Ligne 2 - + diff --git a/entourage/Storyboards/Neighborhood.storyboard b/entourage/Storyboards/Neighborhood.storyboard index 0f2d39681..7b7ec5594 100644 --- a/entourage/Storyboards/Neighborhood.storyboard +++ b/entourage/Storyboards/Neighborhood.storyboard @@ -605,82 +605,82 @@ - + - - - - - - - - - - - + + + + + + + + + + - + - - - - - - - - - - - + + + + + + + + + + diff --git a/entourage/Storyboards/Neighborhood_Report.storyboard b/entourage/Storyboards/Neighborhood_Report.storyboard index f5c7d101f..8602259e7 100644 --- a/entourage/Storyboards/Neighborhood_Report.storyboard +++ b/entourage/Storyboards/Neighborhood_Report.storyboard @@ -1,9 +1,9 @@ - + - + @@ -27,14 +27,14 @@ - + - + - + @@ -55,7 +55,7 @@ - + @@ -113,7 +113,7 @@ - +