构建预警模块与OBU模块
This commit is contained in:
@@ -506,6 +506,8 @@ dependencies {
|
||||
implementation project(':modules:mogo-module-extensions')
|
||||
implementation project(':modules:mogo-module-map')
|
||||
implementation project(':modules:mogo-module-smp')
|
||||
implementation project(':modules:mogo-module-obu-mogo')
|
||||
implementation project(':modules:mogo-module-warning')
|
||||
implementation project(':modules:mogo-module-adas')
|
||||
implementation project(':foudations:httpdns-mogo')
|
||||
}
|
||||
|
||||
@@ -304,11 +304,15 @@ public class MogoApplication extends AbsMogoApplication {
|
||||
// 碰撞报警模块
|
||||
MogoModulePaths.addModule(new MogoModule(MogoServicePaths.PATH_CRASH_WARNING, "CrashWarning"));
|
||||
|
||||
// OBU 模块
|
||||
MogoModulePaths.addModule(new MogoModule(MogoServicePaths.PATH_V2X_OBU_MOGO, "MoGoObuProvider"));
|
||||
// widgets 模块
|
||||
MogoModulePaths.addModule(new MogoModule(MogoServicePaths.PATH_V2X_WARNING, "MoGoWarningProvider"));
|
||||
// 小地图模块
|
||||
MogoModulePaths.addModule(new MogoModule(MogoServicePaths.PATH_SMALL_MAP, "IMogoSmallMapProvider"));
|
||||
// ADAS模块
|
||||
MogoModulePaths.addModule(new MogoModule(MogoServicePaths.PATH_ADAS, "AdasProvider"));
|
||||
//前方碰撞预警
|
||||
// 前方碰撞预警
|
||||
MogoModulePaths.addModule(new MogoModule(MogoServicePaths.PATH_V2X_FRONT_CRASH_WARNING, "IV2XManagerProvider"));
|
||||
|
||||
MogoModulePaths.addBaseModule(new MogoModule(MogoServicePaths.PATH_GLOBAL_UNWAKE, "GlobalUnwake"));
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
package com.amap.navi.mogo_module_adas;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.test.platform.app.InstrumentationRegistry;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Instrumented test, which will execute on an Android device.
|
||||
*
|
||||
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
|
||||
*/
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class ExampleInstrumentedTest {
|
||||
@Test
|
||||
public void useAppContext() {
|
||||
// Context of the app under test.
|
||||
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
|
||||
assertEquals("com.amap.navi.mogo_module_adas.test", appContext.getPackageName());
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
package com.amap.navi.mogo_module_adas;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Example local unit test, which will execute on the development machine (host).
|
||||
*
|
||||
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
|
||||
*/
|
||||
public class ExampleUnitTest {
|
||||
@Test
|
||||
public void addition_isCorrect() {
|
||||
assertEquals(4, 2 + 2);
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,5 @@
|
||||
plugins {
|
||||
id 'com.android.library'
|
||||
id 'kotlin-android'
|
||||
id 'kotlin-android-extensions'
|
||||
id 'kotlin-kapt'
|
||||
id 'com.alibaba.arouter'
|
||||
}
|
||||
|
||||
@@ -34,9 +31,6 @@ android {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
kotlinOptions {
|
||||
jvmTarget = '1.8'
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@@ -44,6 +38,8 @@ dependencies {
|
||||
implementation rootProject.ext.dependencies.androidxappcompat
|
||||
implementation rootProject.ext.dependencies.androidxconstraintlayout
|
||||
implementation rootProject.ext.dependencies.arouter
|
||||
implementation rootProject.ext.dependencies.rxandroid
|
||||
|
||||
annotationProcessor rootProject.ext.dependencies.aroutercompiler
|
||||
|
||||
if (Boolean.valueOf(RELEASE)) {
|
||||
|
||||
@@ -2,17 +2,22 @@ package com.mogo.module.obu.mogo;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.mogo.service.MogoServicePaths;
|
||||
import com.mogo.service.obu.IMoGoObuProvider;
|
||||
import com.mogo.utils.logger.Logger;
|
||||
|
||||
/**
|
||||
* @author xiaoyuzhou
|
||||
* @date 2021/8/2 5:52 下午
|
||||
*/
|
||||
@Route(path = MogoServicePaths.PATH_V2X_OBU_MOGO)
|
||||
public class MoGoObuProvider implements IMoGoObuProvider {
|
||||
private String TAG = "MoGoObuProvider";
|
||||
|
||||
@Override
|
||||
public void init(Context context) {
|
||||
|
||||
Logger.d(TAG, "初始化蘑菇自研OBU……");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
plugins {
|
||||
id 'com.android.library'
|
||||
id 'kotlin-android'
|
||||
id 'kotlin-android-extensions'
|
||||
id 'kotlin-kapt'
|
||||
id 'com.alibaba.arouter'
|
||||
}
|
||||
|
||||
@@ -34,9 +31,6 @@ android {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
kotlinOptions {
|
||||
jvmTarget = '1.8'
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@@ -44,6 +38,8 @@ dependencies {
|
||||
implementation rootProject.ext.dependencies.androidxappcompat
|
||||
implementation rootProject.ext.dependencies.androidxconstraintlayout
|
||||
implementation rootProject.ext.dependencies.arouter
|
||||
implementation rootProject.ext.dependencies.rxandroid
|
||||
|
||||
annotationProcessor rootProject.ext.dependencies.aroutercompiler
|
||||
|
||||
if (Boolean.valueOf(RELEASE)) {
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
GROUP=com.mogo.module
|
||||
POM_ARTIFACT_ID=mogo-module-hmi
|
||||
POM_ARTIFACT_ID=module-hmi
|
||||
VERSION_CODE=1
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.mogo.module.warning;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.mogo.service.MogoServicePaths;
|
||||
import com.mogo.service.warning.IMoGoWaringProvider;
|
||||
import com.mogo.utils.logger.Logger;
|
||||
|
||||
/**
|
||||
* @author xiaoyuzhou
|
||||
* @date 2021/8/2 5:52 下午
|
||||
* 预警模块
|
||||
*/
|
||||
@Route(path = MogoServicePaths.PATH_V2X_WARNING)
|
||||
public class MoGoWarningProvider implements IMoGoWaringProvider {
|
||||
private String TAG = "MoGoWarningProvider";
|
||||
|
||||
|
||||
@Override
|
||||
public void init(FragmentActivity activity, int containerId) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(Context context) {
|
||||
Logger.d(TAG, "初始化蘑菇预警模块……");
|
||||
|
||||
}
|
||||
}
|
||||
@@ -19,6 +19,7 @@ import com.mogo.service.launcher.IMogoLauncher;
|
||||
import com.mogo.service.locationinfo.IMogoLocationInfoService;
|
||||
import com.mogo.service.map.IMogoMapFrameController;
|
||||
import com.mogo.service.map.IMogoMapService;
|
||||
import com.mogo.service.obu.IMoGoObuProvider;
|
||||
import com.mogo.service.smp.IMogoSmallMapProvider;
|
||||
import com.mogo.service.module.IMogoActionManager;
|
||||
import com.mogo.service.module.IMogoAddressManager;
|
||||
@@ -40,6 +41,7 @@ import com.mogo.service.share.IMogoTanluProvider;
|
||||
import com.mogo.service.share.IMogoTanluUiProvider;
|
||||
import com.mogo.service.v2x.DisplayEffectsInterface;
|
||||
import com.mogo.service.v2x.IV2XProvider;
|
||||
import com.mogo.service.warning.IMoGoWaringProvider;
|
||||
import com.mogo.service.windowview.IMogoTopViewManager;
|
||||
import com.mogo.service.windowview.IMogoWindowManager;
|
||||
import com.mogo.skin.support.IMogoSkinSupportInstaller;
|
||||
@@ -326,8 +328,18 @@ public interface IMogoServiceApis extends IProvider {
|
||||
*/
|
||||
IMogoSmallMapProvider getSmallMapProviderApi();
|
||||
|
||||
/*
|
||||
*V2X
|
||||
* */
|
||||
/**
|
||||
* V2X
|
||||
*/
|
||||
IV2XProvider getV2XListenerManager();
|
||||
|
||||
/**
|
||||
* warning 模块
|
||||
*/
|
||||
IMoGoWaringProvider getWaringProviderApi();
|
||||
|
||||
/**
|
||||
* obu-mogo 模块
|
||||
*/
|
||||
IMoGoObuProvider getMoGoObuProviderApi();
|
||||
}
|
||||
|
||||
@@ -48,42 +48,49 @@ public class MogoServicePaths {
|
||||
/**
|
||||
* netty 长链
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_SOCKET_MANAGER = "/socket/manager";
|
||||
|
||||
/**
|
||||
* WebSocket 长链
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_WEB_SOCKET_MANAGER = "/websocket/manager";
|
||||
|
||||
/**
|
||||
* 状态管理接口
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_STATUS_MANAGER = "/statusmanager/api";
|
||||
|
||||
/**
|
||||
* 消息中心
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_MSG_CENTER = "/msgcenter/api";
|
||||
|
||||
/**
|
||||
* 消息中心
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_WINDOW_MANAGER = "/windowmanger/api";
|
||||
|
||||
/**
|
||||
* 卡片控制
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_CARD_MANAGER = "/cardmanager/api";
|
||||
|
||||
/**
|
||||
* 管理 fragment
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_FRAGMENT_MANAGER = "/fragmentmanager/api";
|
||||
|
||||
@@ -92,36 +99,42 @@ public class MogoServicePaths {
|
||||
*
|
||||
* @deprecated use {@link #PATH_INTENT_MANAGER} instead.
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_VOICE_MANAGER = "/voicemanager/api";
|
||||
|
||||
/**
|
||||
* 意图控制接口
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_INTENT_MANAGER = "/intentmanager/api";
|
||||
|
||||
/**
|
||||
* 基础功能监听回调注册
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_REGISTER_CENTER = "/registercenter/api";
|
||||
|
||||
/**
|
||||
* 基础家和公司管理
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_ADDRESS_MANAGER = "/addressmanager/api";
|
||||
|
||||
/**
|
||||
* 导航搜索模块管理
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_SEARCH_MANAGER = "/searchmanager/api";
|
||||
|
||||
/**
|
||||
* 基础设置参数管理
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_SETTING_MANAGER = "/settingmanager/api";
|
||||
|
||||
@@ -129,18 +142,21 @@ public class MogoServicePaths {
|
||||
/**
|
||||
* 搜索module管理中心
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_SERACH_CENTER = "/searchcenter/api";
|
||||
|
||||
/**
|
||||
* 大而全数据管理中心
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_DATA_MANAGER = "/datamanager/api";
|
||||
|
||||
/**
|
||||
* adas 控制
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_ADAS_CONTROLLER = "/adascontroller/api";
|
||||
|
||||
@@ -152,172 +168,224 @@ public class MogoServicePaths {
|
||||
/**
|
||||
* 动作指令
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_ACTION_APIS = "/mogoaction/api";
|
||||
|
||||
/**
|
||||
* 刷新策略控制
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_REFRESH_STRATEGY_API = "/refreshstrategy/api";
|
||||
|
||||
/**
|
||||
* 刷新策略控制
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_LAUNCHER_API = "/launcher/api";
|
||||
|
||||
/**
|
||||
* 入口按钮
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_ENTRANCE_BUTTON_API = "/entrancebutton/api";
|
||||
|
||||
/**
|
||||
* 顶部1/2屏管理
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_EXTENSIONS_TOP_VIEW_MANAGER = "/topview/api";
|
||||
|
||||
/**
|
||||
* 浓雾等极端事件特殊效果
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_MAIN_DISPLAY_EFFECTS_MANAGER = "/displayeffects/api";
|
||||
|
||||
/**
|
||||
* 其他模块调用公共的marker打点
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_MARKER_SERVICE = "/mogomarker/api";
|
||||
|
||||
/**
|
||||
* 其他模块调用分享框
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_SHARE = "/extensions/share";
|
||||
|
||||
/**
|
||||
* obu相关接口
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_OBU = "/obu/api";
|
||||
|
||||
/**
|
||||
* 事件面板
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_EVENT_PANEL = "/event/panel";
|
||||
|
||||
/**
|
||||
* 左侧面板
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_LEFT_PANEL = "/left/panel";
|
||||
|
||||
/**
|
||||
* 比亚迪模块
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_SPLASH = "/splash/api";
|
||||
|
||||
/**
|
||||
* 位置上报
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_LOCATION_INFO = "/locationinfo/api";
|
||||
|
||||
/**
|
||||
* passport
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_PASSPORT = "/passport/api";
|
||||
|
||||
/**
|
||||
* 授权服务
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_AGREEMENT = "/agreement/showFragment";
|
||||
|
||||
/**
|
||||
* 日志上传
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_MOGO_MONITOR = "/monitor/api";
|
||||
|
||||
/**
|
||||
* 探路api
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_TANLU_API = "/tanlulib/api";
|
||||
|
||||
/**
|
||||
* 策略上报
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_STRATEGY_SHARE = "/share/strategy";
|
||||
|
||||
/**
|
||||
* 分享模块中,交通状况服务上报
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_TRAFFIC_UPLOAD = "/share/traffic";
|
||||
|
||||
/**
|
||||
* 高德地图巡航上报
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_GAODE_AIMLESS_SHARE = "/share/gaodeAimless";
|
||||
|
||||
/**
|
||||
* 探路ui
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_TANLU_UI_API = "/tanlu/ui";
|
||||
|
||||
/**
|
||||
* 碰撞报警模块 已碰撞
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_CRASH_WARNING = "/crash/warning";
|
||||
|
||||
/**
|
||||
* 悬浮小控件
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_WIDGETS = "/widgets/provider";
|
||||
|
||||
/**
|
||||
* 在线好友面板
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_ONLINE_CAR_PANEL = "/onlinecar/panel";
|
||||
|
||||
/**
|
||||
* 全局免唤醒
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_GLOBAL_UNWAKE = "/global/unwake";
|
||||
|
||||
/**
|
||||
* 返回悬浮按钮
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_BACK = "/back2launcher/ui";
|
||||
|
||||
/**
|
||||
* 自研地图和高德地图切换
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_MAP_FRAME_CONTROLLER = "/mapframe/controller";
|
||||
|
||||
/**
|
||||
* 小地图控件
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_SMALL_MAP = "/small_map/api";
|
||||
|
||||
/**
|
||||
* ADAS 模块
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_ADAS = "/adas/api";
|
||||
|
||||
/*
|
||||
*前方碰撞预警 未碰撞
|
||||
* */
|
||||
/**
|
||||
* 前方碰撞预警 未碰撞
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_V2X_FRONT_CRASH_WARNING = "/front/crashwarning";
|
||||
|
||||
/**
|
||||
* warning 模块
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_V2X_WARNING = "/warning/api";
|
||||
|
||||
/**
|
||||
* obu-mogo 模块
|
||||
*/
|
||||
@Keep
|
||||
@Deprecated
|
||||
public static final String PATH_V2X_OBU_MOGO = "/obu_mogo/api";
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.mogo.service.warning;
|
||||
|
||||
import androidx.annotation.IdRes;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
|
||||
import com.alibaba.android.arouter.facade.template.IProvider;
|
||||
|
||||
/**
|
||||
* @author xiaoyuzhou
|
||||
* @date 2021/8/2 7:36 下午
|
||||
*/
|
||||
public interface IMoGoWaringProvider extends IProvider {
|
||||
/**
|
||||
* 初始化网约车容器
|
||||
*
|
||||
* @param activity activity
|
||||
* @param containerId 容器ID
|
||||
*/
|
||||
void init(FragmentActivity activity, @IdRes int containerId);
|
||||
}
|
||||
@@ -27,6 +27,7 @@ import com.mogo.service.launcher.IMogoLauncher;
|
||||
import com.mogo.service.locationinfo.IMogoLocationInfoService;
|
||||
import com.mogo.service.map.IMogoMapFrameController;
|
||||
import com.mogo.service.map.IMogoMapService;
|
||||
import com.mogo.service.obu.IMoGoObuProvider;
|
||||
import com.mogo.service.smp.IMogoSmallMapProvider;
|
||||
import com.mogo.service.module.IMogoActionManager;
|
||||
import com.mogo.service.module.IMogoAddressManager;
|
||||
@@ -48,6 +49,7 @@ import com.mogo.service.share.IMogoTanluProvider;
|
||||
import com.mogo.service.share.IMogoTanluUiProvider;
|
||||
import com.mogo.service.v2x.DisplayEffectsInterface;
|
||||
import com.mogo.service.v2x.IV2XProvider;
|
||||
import com.mogo.service.warning.IMoGoWaringProvider;
|
||||
import com.mogo.service.windowview.IMogoTopViewManager;
|
||||
import com.mogo.service.windowview.IMogoWindowManager;
|
||||
import com.mogo.skin.support.IMogoSkinSupportInstaller;
|
||||
@@ -269,6 +271,16 @@ public class MogoServiceApis implements IMogoServiceApis {
|
||||
return getApiInstance(IV2XProvider.class, MogoServicePaths.PATH_V2X_FRONT_CRASH_WARNING);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMoGoWaringProvider getWaringProviderApi() {
|
||||
return getApiInstance(IMoGoWaringProvider.class, MogoServicePaths.PATH_V2X_WARNING);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMoGoObuProvider getMoGoObuProviderApi() {
|
||||
return getApiInstance(IMoGoObuProvider.class, MogoServicePaths.PATH_V2X_OBU_MOGO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMogoTrafficUploadProvider getTrafficUploadApi() {
|
||||
return getApiInstance(IMogoTrafficUploadProvider.class, MogoServicePaths.PATH_TRAFFIC_UPLOAD);
|
||||
|
||||
Reference in New Issue
Block a user