cleanup
This commit is contained in:
parent
1bad7f5639
commit
a7e3c8c1d1
@ -29,7 +29,6 @@
|
||||
01F2A03B23A8159900D954D8 /* ActionOpenAppModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01F2A03A23A8159900D954D8 /* ActionOpenAppModel.swift */; };
|
||||
01F2A04C23A82B1B00D954D8 /* ActionCallModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01F2A04B23A82B1B00D954D8 /* ActionCallModel.swift */; };
|
||||
01F2A04E23A82CF500D954D8 /* ActionPopupModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01F2A04D23A82CF500D954D8 /* ActionPopupModel.swift */; };
|
||||
01F2A05023A82D0800D954D8 /* ActionTopAlertModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01F2A04F23A82D0800D954D8 /* ActionTopAlertModel.swift */; };
|
||||
01F2A05223A8325100D954D8 /* ModelMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01F2A05123A8325100D954D8 /* ModelMapping.swift */; };
|
||||
0A42538F23F3414800554656 /* Codable+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A42538E23F3414800554656 /* Codable+Helpers.swift */; };
|
||||
0AFF597A23FC6E60005C24E8 /* ActionShareModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AFF597923FC6E60005C24E8 /* ActionShareModel.swift */; };
|
||||
@ -60,9 +59,7 @@
|
||||
94C014D124211869005811A9 /* ActionRestartModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94C014D024211869005811A9 /* ActionRestartModel.swift */; };
|
||||
94C014D3242119E6005811A9 /* ActionPreviousSubmitModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94C014D2242119E6005811A9 /* ActionPreviousSubmitModel.swift */; };
|
||||
94C014D524211AF0005811A9 /* ActionCancelModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94C014D424211AF0005811A9 /* ActionCancelModel.swift */; };
|
||||
94C014D724211DB2005811A9 /* ActionRedirectModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94C014D624211DB2005811A9 /* ActionRedirectModel.swift */; };
|
||||
94C014D924212360005811A9 /* ActionSettingModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94C014D824212360005811A9 /* ActionSettingModel.swift */; };
|
||||
94C014DB24212410005811A9 /* ActionCollapseNotificationModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94C014DA24212410005811A9 /* ActionCollapseNotificationModel.swift */; };
|
||||
A332F33F20C7231700DCD9D9 /* MVMCoreViewControllerAnimatedTransitioning.h in Headers */ = {isa = PBXBuildFile; fileRef = A332F33E20C7231600DCD9D9 /* MVMCoreViewControllerAnimatedTransitioning.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
AF1201832108C9B400E2F592 /* MVMCoreViewManagerViewControllerProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = AF1201812108C9B400E2F592 /* MVMCoreViewManagerViewControllerProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
AF26DDAE1FCE6A37004E8F65 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = AF26DDB01FCE6A37004E8F65 /* Localizable.strings */; };
|
||||
@ -170,7 +167,6 @@
|
||||
D2DEDCB923C6400600C44CC4 /* UnitInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2DEDCB823C6400600C44CC4 /* UnitInterval.swift */; };
|
||||
D2DEDCBB23C65BC300C44CC4 /* Percent.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2DEDCBA23C65BC300C44CC4 /* Percent.swift */; };
|
||||
D2E1FAD92260C3E400AEFD8C /* DelegateObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2E1FAD82260C3E400AEFD8C /* DelegateObject.swift */; };
|
||||
EAE09C5E23F4389600765089 /* ActionOpenPanelModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAE09C5D23F4389600765089 /* ActionOpenPanelModel.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
@ -182,7 +178,6 @@
|
||||
01F2A03A23A8159900D954D8 /* ActionOpenAppModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionOpenAppModel.swift; sourceTree = "<group>"; };
|
||||
01F2A04B23A82B1B00D954D8 /* ActionCallModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionCallModel.swift; sourceTree = "<group>"; };
|
||||
01F2A04D23A82CF500D954D8 /* ActionPopupModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionPopupModel.swift; sourceTree = "<group>"; };
|
||||
01F2A04F23A82D0800D954D8 /* ActionTopAlertModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionTopAlertModel.swift; sourceTree = "<group>"; };
|
||||
01F2A05123A8325100D954D8 /* ModelMapping.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModelMapping.swift; sourceTree = "<group>"; };
|
||||
0A11030B20864F94008ADD90 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
0A11030C20864F9A008ADD90 /* es-MX */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "es-MX"; path = "es-MX.lproj/Localizable.strings"; sourceTree = "<group>"; };
|
||||
@ -217,9 +212,7 @@
|
||||
94C014D024211869005811A9 /* ActionRestartModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionRestartModel.swift; sourceTree = "<group>"; };
|
||||
94C014D2242119E6005811A9 /* ActionPreviousSubmitModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionPreviousSubmitModel.swift; sourceTree = "<group>"; };
|
||||
94C014D424211AF0005811A9 /* ActionCancelModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionCancelModel.swift; sourceTree = "<group>"; };
|
||||
94C014D624211DB2005811A9 /* ActionRedirectModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionRedirectModel.swift; sourceTree = "<group>"; };
|
||||
94C014D824212360005811A9 /* ActionSettingModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionSettingModel.swift; sourceTree = "<group>"; };
|
||||
94C014DA24212410005811A9 /* ActionCollapseNotificationModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionCollapseNotificationModel.swift; sourceTree = "<group>"; };
|
||||
A332F33E20C7231600DCD9D9 /* MVMCoreViewControllerAnimatedTransitioning.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreViewControllerAnimatedTransitioning.h; sourceTree = "<group>"; };
|
||||
AF1201812108C9B400E2F592 /* MVMCoreViewManagerViewControllerProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreViewManagerViewControllerProtocol.h; sourceTree = "<group>"; };
|
||||
AF26DDAF1FCE6A37004E8F65 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
@ -331,7 +324,6 @@
|
||||
D2DEDCB823C6400600C44CC4 /* UnitInterval.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnitInterval.swift; sourceTree = "<group>"; };
|
||||
D2DEDCBA23C65BC300C44CC4 /* Percent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Percent.swift; sourceTree = "<group>"; };
|
||||
D2E1FAD82260C3E400AEFD8C /* DelegateObject.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DelegateObject.swift; sourceTree = "<group>"; };
|
||||
EAE09C5D23F4389600765089 /* ActionOpenPanelModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionOpenPanelModel.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@ -471,16 +463,12 @@
|
||||
01F2A03A23A8159900D954D8 /* ActionOpenAppModel.swift */,
|
||||
01F2A04B23A82B1B00D954D8 /* ActionCallModel.swift */,
|
||||
01F2A04D23A82CF500D954D8 /* ActionPopupModel.swift */,
|
||||
01F2A04F23A82D0800D954D8 /* ActionTopAlertModel.swift */,
|
||||
01C851D023CF97FE0021F976 /* ActionBackModel.swift */,
|
||||
EAE09C5D23F4389600765089 /* ActionOpenPanelModel.swift */,
|
||||
0AFF597923FC6E60005C24E8 /* ActionShareModel.swift */,
|
||||
94C014D024211869005811A9 /* ActionRestartModel.swift */,
|
||||
94C014D2242119E6005811A9 /* ActionPreviousSubmitModel.swift */,
|
||||
94C014D424211AF0005811A9 /* ActionCancelModel.swift */,
|
||||
94C014D624211DB2005811A9 /* ActionRedirectModel.swift */,
|
||||
94C014D824212360005811A9 /* ActionSettingModel.swift */,
|
||||
94C014DA24212410005811A9 /* ActionCollapseNotificationModel.swift */,
|
||||
);
|
||||
path = ActionType;
|
||||
sourceTree = "<group>";
|
||||
@ -922,7 +910,6 @@
|
||||
946EE1BC237B691A0036751F /* ActionOpenPageModel.swift in Sources */,
|
||||
AFBB96A61FBA3A9A0008D868 /* MVMCoreTopAlertOperation.m in Sources */,
|
||||
0A42538F23F3414800554656 /* Codable+Helpers.swift in Sources */,
|
||||
94C014DB24212410005811A9 /* ActionCollapseNotificationModel.swift in Sources */,
|
||||
881D26931FCC9D180079C521 /* MVMCoreErrorObject.m in Sources */,
|
||||
94C014D124211869005811A9 /* ActionRestartModel.swift in Sources */,
|
||||
946EE1B0237B5EF70036751F /* JSONHelper.swift in Sources */,
|
||||
@ -931,7 +918,6 @@
|
||||
94C014D3242119E6005811A9 /* ActionPreviousSubmitModel.swift in Sources */,
|
||||
8876D5E91FB50AB000EB2E3D /* NSArray+MFConvenience.m in Sources */,
|
||||
946EE1B2237B5F260036751F /* JSONValue.swift in Sources */,
|
||||
EAE09C5E23F4389600765089 /* ActionOpenPanelModel.swift in Sources */,
|
||||
AFBB96971FBA3A9A0008D868 /* MVMCorePresentViewControllerOperation.m in Sources */,
|
||||
AFBB96581FBA3A570008D868 /* FreeBeeAuthObject.m in Sources */,
|
||||
01F2A04E23A82CF500D954D8 /* ActionPopupModel.swift in Sources */,
|
||||
@ -949,7 +935,6 @@
|
||||
AFBB965D1FBA3A570008D868 /* MFFreebeeHandler.m in Sources */,
|
||||
0AFF597A23FC6E60005C24E8 /* ActionShareModel.swift in Sources */,
|
||||
AFEEE81F1FCDF3CA00B5EDD0 /* MVMCoreLoggingHandler.m in Sources */,
|
||||
94C014D724211DB2005811A9 /* ActionRedirectModel.swift in Sources */,
|
||||
01F2A05223A8325100D954D8 /* ModelMapping.swift in Sources */,
|
||||
AFBB969E1FBA3A9A0008D868 /* MVMCoreAlertObject.m in Sources */,
|
||||
8876D5F51FB50AB000EB2E3D /* UILabel+MFCustom.m in Sources */,
|
||||
@ -960,7 +945,6 @@
|
||||
01DF561421F90ADC00CC099B /* Dictionary+MFConvenience.swift in Sources */,
|
||||
AFBB96B11FBA3B590008D868 /* MVMCoreDispatchUtility.m in Sources */,
|
||||
946EE1A3237B59C30036751F /* ModelProtocol.swift in Sources */,
|
||||
01F2A05023A82D0800D954D8 /* ActionTopAlertModel.swift in Sources */,
|
||||
AFBB965B1FBA3A570008D868 /* FreeBeeUrlObject.m in Sources */,
|
||||
AFEA17A9209B6A1C00BC6740 /* MVMCoreBlockOperation.m in Sources */,
|
||||
AF43A70A1FC4F415008E9347 /* MVMCoreCache.m in Sources */,
|
||||
|
||||
@ -10,7 +10,7 @@ import Foundation
|
||||
|
||||
@objcMembers public class ActionBackModel: ActionModelProtocol {
|
||||
public static var identifier: String = "back"
|
||||
public var actionType: String? = ActionBackModel.identifier
|
||||
public var actionType: String?
|
||||
public var extraParameters: JSONValueDictionary?
|
||||
public var analyticsData: JSONValueDictionary?
|
||||
// Temporary fix till server changes
|
||||
|
||||
@ -10,7 +10,8 @@ import Foundation
|
||||
|
||||
@objcMembers public class ActionCallModel: ActionModelProtocol {
|
||||
public static var identifier: String = "call"
|
||||
public var actionType: String? = ActionCallModel.identifier
|
||||
public var actionType: String?
|
||||
// TODO: decode into phone number once action handler is re-written
|
||||
public var callNumber: String
|
||||
public var extraParameters: JSONValueDictionary?
|
||||
public var analyticsData: JSONValueDictionary?
|
||||
|
||||
@ -10,12 +10,8 @@ import UIKit
|
||||
|
||||
@objcMembers public class ActionCancelModel: ActionModelProtocol {
|
||||
public static var identifier: String = "cancel"
|
||||
|
||||
public var actionType: String?
|
||||
|
||||
public var extraParameters: JSONValueDictionary?
|
||||
|
||||
public var analyticsData: JSONValueDictionary?
|
||||
|
||||
public var title: String?
|
||||
}
|
||||
|
||||
@ -1,21 +0,0 @@
|
||||
//
|
||||
// ActionCollapseNotificationModel.swift
|
||||
// MVMCore
|
||||
//
|
||||
// Created by Ryan on 3/17/20.
|
||||
// Copyright © 2020 myverizon. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
@objcMembers public class ActionCollapseNotificationModel: ActionModelProtocol {
|
||||
public static var identifier: String = "collapseNotification"
|
||||
|
||||
public var actionType: String?
|
||||
|
||||
public var extraParameters: JSONValueDictionary?
|
||||
|
||||
public var analyticsData: JSONValueDictionary?
|
||||
|
||||
public var title: String?
|
||||
}
|
||||
@ -10,7 +10,7 @@ import Foundation
|
||||
|
||||
public protocol ActionModelProtocol: ModelProtocol {
|
||||
|
||||
var actionType: String? { get set }
|
||||
var actionType: String? { get }
|
||||
var extraParameters: JSONValueDictionary? { get set }
|
||||
var analyticsData: JSONValueDictionary? { get set }
|
||||
|
||||
|
||||
@ -10,7 +10,8 @@ import Foundation
|
||||
|
||||
@objcMembers public class ActionOpenAppModel: ActionModelProtocol {
|
||||
public static var identifier: String = "openApp"
|
||||
public var actionType: String? = ActionOpenAppModel.identifier
|
||||
public var actionType: String?
|
||||
// TODO: decode into url once action handler is re-written
|
||||
public var appURL: String
|
||||
public var extraParameters: JSONValueDictionary?
|
||||
public var analyticsData: JSONValueDictionary?
|
||||
|
||||
@ -10,7 +10,7 @@ import Foundation
|
||||
|
||||
@objcMembers public class ActionOpenPageModel: ActionModelProtocol {
|
||||
public static var identifier: String = "openPage"
|
||||
public var actionType: String? = ActionOpenPageModel.identifier
|
||||
public var actionType: String?
|
||||
public var pageType: String
|
||||
public var extraParameters: JSONValueDictionary?
|
||||
public var analyticsData: JSONValueDictionary?
|
||||
|
||||
@ -1,23 +0,0 @@
|
||||
//
|
||||
// ActionOpenPanelModel.swift
|
||||
// MVMCore
|
||||
//
|
||||
// Created by Khan, Arshad on 12/02/20.
|
||||
// Copyright © 2020 myverizon. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
@objcMembers public class ActionOpenPanelModel: ActionModelProtocol {
|
||||
public static var identifier: String = "openPanel"
|
||||
public var actionType: String? = ActionOpenPanelModel.identifier
|
||||
public var panel: String
|
||||
public var extraParameters: JSONValueDictionary?
|
||||
public var analyticsData: JSONValueDictionary?
|
||||
// Temporary fix till server changes
|
||||
public var title: String?
|
||||
|
||||
public init(panel: String) {
|
||||
self.panel = panel
|
||||
}
|
||||
}
|
||||
@ -10,7 +10,8 @@ import Foundation
|
||||
|
||||
@objcMembers public class ActionOpenUrlModel: ActionModelProtocol {
|
||||
public static var identifier: String = "openURL"
|
||||
public var actionType: String? = ActionOpenUrlModel.identifier
|
||||
public var actionType: String?
|
||||
// TODO: decode into url once action handler is re-written
|
||||
public var browserUrl: String
|
||||
public var extraParameters: JSONValueDictionary?
|
||||
public var analyticsData: JSONValueDictionary?
|
||||
|
||||
@ -9,9 +9,8 @@
|
||||
import Foundation
|
||||
|
||||
@objcMembers public class ActionPopupModel: ActionModelProtocol {
|
||||
|
||||
public static var identifier: String = "popup"
|
||||
public var actionType: String? = ActionPopupModel.identifier
|
||||
public var actionType: String?
|
||||
public var title: String?
|
||||
public var pageType: String
|
||||
public var extraParameters: JSONValueDictionary?
|
||||
|
||||
@ -10,12 +10,8 @@ import UIKit
|
||||
|
||||
@objcMembers public class ActionPreviousSubmitModel: ActionModelProtocol {
|
||||
public static var identifier: String = "previousSubmit"
|
||||
|
||||
public var actionType: String?
|
||||
|
||||
public var extraParameters: JSONValueDictionary?
|
||||
|
||||
public var analyticsData: JSONValueDictionary?
|
||||
|
||||
public var title: String?
|
||||
}
|
||||
|
||||
@ -1,35 +0,0 @@
|
||||
//
|
||||
// ActionRedirectModel.swift
|
||||
// MVMCore
|
||||
//
|
||||
// Created by Ryan on 3/17/20.
|
||||
// Copyright © 2020 myverizon. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
@objcMembers public class ActionRedirectModel: ActionModelProtocol {
|
||||
public static var identifier: String = "switchApp"
|
||||
|
||||
public var actionType: String?
|
||||
|
||||
public var extraParameters: JSONValueDictionary?
|
||||
|
||||
public var analyticsData: JSONValueDictionary?
|
||||
|
||||
public var title: String?
|
||||
|
||||
///appContext should be value of "mfrc", "mobileFirstSS", "mfPrepaySS", "mfCT"
|
||||
public var appContext: MVMAppContext? = ActionRedirectModel.MVMAppContext.none
|
||||
|
||||
///Optional pageType, if pageType is nil, will direct to pageType launchApp
|
||||
public var pageType: String?
|
||||
|
||||
public enum MVMAppContext: String, Codable {
|
||||
case mfrc
|
||||
case mobileFirstSS
|
||||
case mfPrepaySS
|
||||
case mfCT
|
||||
case none
|
||||
}
|
||||
}
|
||||
@ -10,13 +10,9 @@ import UIKit
|
||||
|
||||
@objcMembers public class ActionRestartModel: ActionModelProtocol {
|
||||
public static var identifier: String = "restart"
|
||||
|
||||
public var actionType: String?
|
||||
|
||||
public var extraParameters: JSONValueDictionary?
|
||||
|
||||
public var analyticsData: JSONValueDictionary?
|
||||
|
||||
public var title: String?
|
||||
|
||||
///Optional pageType, if pageType is nil, will start with pageType launchApp
|
||||
|
||||
@ -10,15 +10,8 @@ import UIKit
|
||||
|
||||
@objcMembers public class ActionSettingModel: ActionModelProtocol {
|
||||
public static var identifier: String = "openSettings"
|
||||
|
||||
public var actionType: String?
|
||||
|
||||
public var extraParameters: JSONValueDictionary?
|
||||
|
||||
public var analyticsData: JSONValueDictionary?
|
||||
|
||||
public var title: String?
|
||||
|
||||
///String type for pageType, currently only support "location" and "push"
|
||||
public var pageType: String
|
||||
}
|
||||
|
||||
@ -1,24 +0,0 @@
|
||||
//
|
||||
// ActionTopAlertModel.swift
|
||||
// MVMCore
|
||||
//
|
||||
// Created by Suresh, Kamlesh on 12/16/19.
|
||||
// Copyright © 2019 myverizon. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
@objcMembers public class ActionTopAlertModel: ActionModelProtocol {
|
||||
|
||||
public static var identifier: String = "topAlert"
|
||||
public var actionType: String? = ActionTopAlertModel.identifier
|
||||
public var pageType: String
|
||||
public var extraParameters: JSONValueDictionary?
|
||||
public var analyticsData: JSONValueDictionary?
|
||||
// Temporary fix till server changes
|
||||
public var title: String?
|
||||
|
||||
public init(pageType: String) {
|
||||
self.pageType = pageType
|
||||
}
|
||||
}
|
||||
@ -16,15 +16,11 @@ import Foundation
|
||||
try? ModelRegistry.register(ActionOpenAppModel.self)
|
||||
try? ModelRegistry.register(ActionCallModel.self)
|
||||
try? ModelRegistry.register(ActionPopupModel.self)
|
||||
try? ModelRegistry.register(ActionTopAlertModel.self)
|
||||
try? ModelRegistry.register(ActionBackModel.self)
|
||||
try? ModelRegistry.register(ActionOpenPanelModel.self)
|
||||
try? ModelRegistry.register(ActionShareModel.self)
|
||||
try? ModelRegistry.register(ActionRestartModel.self)
|
||||
try? ModelRegistry.register(ActionPreviousSubmitModel.self)
|
||||
try? ModelRegistry.register(ActionCancelModel.self)
|
||||
try? ModelRegistry.register(ActionRedirectModel.self)
|
||||
try? ModelRegistry.register(ActionSettingModel.self)
|
||||
try? ModelRegistry.register(ActionCollapseNotificationModel.self)
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user