mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2024-11-27 05:00:23 +00:00
added app_content module
This commit is contained in:
parent
f292f551ae
commit
323e66f765
@ -152,6 +152,8 @@ set(SYSTEM_LIBS src/core/libraries/system/commondialog.cpp
|
||||
src/core/libraries/system/systemservice.h
|
||||
src/core/libraries/system/userservice.cpp
|
||||
src/core/libraries/system/userservice.h
|
||||
src/core/libraries/app_content/app_content.cpp
|
||||
src/core/libraries/app_content/app_content.h
|
||||
)
|
||||
|
||||
set(VIDEOOUT_LIB src/core/libraries/videoout/buffer.h
|
||||
|
@ -101,6 +101,7 @@ bool ParseFilterRule(Filter& instance, Iterator begin, Iterator end) {
|
||||
SUB(Lib, NpTrophy) \
|
||||
SUB(Lib, Screenshot) \
|
||||
SUB(Lib, LibCInternal) \
|
||||
SUB(Lib, AppContent) \
|
||||
CLS(Frontend) \
|
||||
CLS(Render) \
|
||||
SUB(Render, Vulkan) \
|
||||
|
@ -68,6 +68,7 @@ enum class Class : u8 {
|
||||
Lib_NpTrophy, ///< The LibSceNpTrophy implementation
|
||||
Lib_Screenshot, ///< The LibSceScreenshot implementation
|
||||
Lib_LibCInternal, ///< The LibCInternal implementation.
|
||||
Lib_AppContent, ///< The LibSceAppContent implementation.
|
||||
Frontend, ///< Emulator UI
|
||||
Render, ///< Video Core
|
||||
Render_Vulkan, ///< Vulkan backend
|
||||
|
283
src/core/libraries/app_content/app_content.cpp
Normal file
283
src/core/libraries/app_content/app_content.cpp
Normal file
@ -0,0 +1,283 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
// Generated By moduleGenerator
|
||||
#include <cmath>
|
||||
#include "app_content.h"
|
||||
#include "common/logging/log.h"
|
||||
#include "core/libraries/error_codes.h"
|
||||
#include "core/libraries/libs.h"
|
||||
|
||||
namespace Libraries::AppContent {
|
||||
|
||||
int PS4_SYSV_ABI _Z5dummyv() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentAddcontDelete() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentAddcontEnqueueDownload() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentAddcontEnqueueDownloadSp() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentAddcontMount() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentAddcontShrink() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentAddcontUnmount() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentAppParamGetInt() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentAppParamGetString() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentDownload0Expand() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentDownload0Shrink() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentDownload1Expand() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentDownload1Shrink() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentDownloadDataFormat() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentDownloadDataGetAvailableSpaceKb() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentGetAddcontDownloadProgress() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentGetAddcontInfo() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentGetAddcontInfoList() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentGetEntitlementKey() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentGetRegion() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentInitialize(const OrbisAppContentInitParam* initParam,
|
||||
OrbisAppContentBootParam* bootParam) {
|
||||
LOG_ERROR(Lib_AppContent, "(DUMMY) called");
|
||||
bootParam->attr = 0; // always 0
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentRequestPatchInstall() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentSmallSharedDataFormat() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentSmallSharedDataGetAvailableSpaceKb() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentSmallSharedDataMount() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentSmallSharedDataUnmount() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentTemporaryDataFormat() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentTemporaryDataGetAvailableSpaceKb() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentTemporaryDataMount() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentTemporaryDataMount2() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentTemporaryDataUnmount() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentGetPftFlag() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI Func_C59A36FF8D7C59DA() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentAddcontEnqueueDownloadByEntitlemetId() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentAddcontMountByEntitlemetId() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentGetAddcontInfoByEntitlementId() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentGetAddcontInfoListByIroTag() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
int PS4_SYSV_ABI sceAppContentGetDownloadedStoreCountry() {
|
||||
LOG_ERROR(Lib_AppContent, "(STUBBED) called");
|
||||
return ORBIS_OK;
|
||||
}
|
||||
|
||||
void RegisterlibSceAppContent(Core::Loader::SymbolsResolver* sym) {
|
||||
LIB_FUNCTION("AS45QoYHjc4", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1, _Z5dummyv);
|
||||
LIB_FUNCTION("ZiATpP9gEkA", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentAddcontDelete);
|
||||
LIB_FUNCTION("7gxh+5QubhY", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentAddcontEnqueueDownload);
|
||||
LIB_FUNCTION("TVM-aYIsG9k", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentAddcontEnqueueDownloadSp);
|
||||
LIB_FUNCTION("VANhIWcqYak", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentAddcontMount);
|
||||
LIB_FUNCTION("D3H+cjfzzFY", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentAddcontShrink);
|
||||
LIB_FUNCTION("3rHWaV-1KC4", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentAddcontUnmount);
|
||||
LIB_FUNCTION("99b82IKXpH4", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentAppParamGetInt);
|
||||
LIB_FUNCTION("+OlXCu8qxUk", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentAppParamGetString);
|
||||
LIB_FUNCTION("gpGZDB4ZlrI", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentDownload0Expand);
|
||||
LIB_FUNCTION("S5eMvWnbbXg", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentDownload0Shrink);
|
||||
LIB_FUNCTION("B5gVeVurdUA", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentDownload1Expand);
|
||||
LIB_FUNCTION("kUeYucqnb7o", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentDownload1Shrink);
|
||||
LIB_FUNCTION("CN7EbEV7MFU", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentDownloadDataFormat);
|
||||
LIB_FUNCTION("Gl6w5i0JokY", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentDownloadDataGetAvailableSpaceKb);
|
||||
LIB_FUNCTION("5bvvbUSiFs4", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentGetAddcontDownloadProgress);
|
||||
LIB_FUNCTION("m47juOmH0VE", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentGetAddcontInfo);
|
||||
LIB_FUNCTION("xnd8BJzAxmk", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentGetAddcontInfoList);
|
||||
LIB_FUNCTION("XTWR0UXvcgs", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentGetEntitlementKey);
|
||||
LIB_FUNCTION("74-1x3lyZK8", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentGetRegion);
|
||||
LIB_FUNCTION("R9lA82OraNs", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentInitialize);
|
||||
LIB_FUNCTION("bVtF7v2uqT0", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentRequestPatchInstall);
|
||||
LIB_FUNCTION("9Gq5rOkWzNU", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentSmallSharedDataFormat);
|
||||
LIB_FUNCTION("xhb-r8etmAA", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentSmallSharedDataGetAvailableSpaceKb);
|
||||
LIB_FUNCTION("QuApZnMo9MM", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentSmallSharedDataMount);
|
||||
LIB_FUNCTION("EqMtBHWu-5M", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentSmallSharedDataUnmount);
|
||||
LIB_FUNCTION("a5N7lAG0y2Q", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentTemporaryDataFormat);
|
||||
LIB_FUNCTION("SaKib2Ug0yI", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentTemporaryDataGetAvailableSpaceKb);
|
||||
LIB_FUNCTION("7bOLX66Iz-U", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentTemporaryDataMount);
|
||||
LIB_FUNCTION("buYbeLOGWmA", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentTemporaryDataMount2);
|
||||
LIB_FUNCTION("bcolXMmp6qQ", "libSceAppContent", 1, "libSceAppContentUtil", 1, 1,
|
||||
sceAppContentTemporaryDataUnmount);
|
||||
LIB_FUNCTION("xmhnAoxN3Wk", "libSceAppContentPft", 1, "libSceAppContent", 1, 1,
|
||||
sceAppContentGetPftFlag);
|
||||
LIB_FUNCTION("xZo2-418Wdo", "libSceAppContentBundle", 1, "libSceAppContent", 1, 1,
|
||||
Func_C59A36FF8D7C59DA);
|
||||
LIB_FUNCTION("kJmjt81mXKQ", "libSceAppContentIro", 1, "libSceAppContent", 1, 1,
|
||||
sceAppContentAddcontEnqueueDownloadByEntitlemetId);
|
||||
LIB_FUNCTION("efX3lrPwdKA", "libSceAppContentIro", 1, "libSceAppContent", 1, 1,
|
||||
sceAppContentAddcontMountByEntitlemetId);
|
||||
LIB_FUNCTION("z9hgjLd1SGA", "libSceAppContentIro", 1, "libSceAppContent", 1, 1,
|
||||
sceAppContentGetAddcontInfoByEntitlementId);
|
||||
LIB_FUNCTION("3wUaDTGmjcQ", "libSceAppContentIro", 1, "libSceAppContent", 1, 1,
|
||||
sceAppContentGetAddcontInfoListByIroTag);
|
||||
LIB_FUNCTION("TCqT7kPuGx0", "libSceAppContentSc", 1, "libSceAppContent", 1, 1,
|
||||
sceAppContentGetDownloadedStoreCountry);
|
||||
};
|
||||
|
||||
} // namespace Libraries::AppContent
|
65
src/core/libraries/app_content/app_content.h
Normal file
65
src/core/libraries/app_content/app_content.h
Normal file
@ -0,0 +1,65 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "common/types.h"
|
||||
|
||||
namespace Core::Loader {
|
||||
class SymbolsResolver;
|
||||
}
|
||||
|
||||
namespace Libraries::AppContent {
|
||||
|
||||
struct OrbisAppContentInitParam {
|
||||
char reserved[32];
|
||||
};
|
||||
|
||||
struct OrbisAppContentBootParam {
|
||||
char reserved1[4];
|
||||
u32 attr;
|
||||
char reserved2[32];
|
||||
};
|
||||
|
||||
int PS4_SYSV_ABI _Z5dummyv();
|
||||
int PS4_SYSV_ABI sceAppContentAddcontDelete();
|
||||
int PS4_SYSV_ABI sceAppContentAddcontEnqueueDownload();
|
||||
int PS4_SYSV_ABI sceAppContentAddcontEnqueueDownloadSp();
|
||||
int PS4_SYSV_ABI sceAppContentAddcontMount();
|
||||
int PS4_SYSV_ABI sceAppContentAddcontShrink();
|
||||
int PS4_SYSV_ABI sceAppContentAddcontUnmount();
|
||||
int PS4_SYSV_ABI sceAppContentAppParamGetInt();
|
||||
int PS4_SYSV_ABI sceAppContentAppParamGetString();
|
||||
int PS4_SYSV_ABI sceAppContentDownload0Expand();
|
||||
int PS4_SYSV_ABI sceAppContentDownload0Shrink();
|
||||
int PS4_SYSV_ABI sceAppContentDownload1Expand();
|
||||
int PS4_SYSV_ABI sceAppContentDownload1Shrink();
|
||||
int PS4_SYSV_ABI sceAppContentDownloadDataFormat();
|
||||
int PS4_SYSV_ABI sceAppContentDownloadDataGetAvailableSpaceKb();
|
||||
int PS4_SYSV_ABI sceAppContentGetAddcontDownloadProgress();
|
||||
int PS4_SYSV_ABI sceAppContentGetAddcontInfo();
|
||||
int PS4_SYSV_ABI sceAppContentGetAddcontInfoList();
|
||||
int PS4_SYSV_ABI sceAppContentGetEntitlementKey();
|
||||
int PS4_SYSV_ABI sceAppContentGetRegion();
|
||||
int PS4_SYSV_ABI sceAppContentInitialize(const OrbisAppContentInitParam* initParam,
|
||||
OrbisAppContentBootParam* bootParam);
|
||||
int PS4_SYSV_ABI sceAppContentRequestPatchInstall();
|
||||
int PS4_SYSV_ABI sceAppContentSmallSharedDataFormat();
|
||||
int PS4_SYSV_ABI sceAppContentSmallSharedDataGetAvailableSpaceKb();
|
||||
int PS4_SYSV_ABI sceAppContentSmallSharedDataMount();
|
||||
int PS4_SYSV_ABI sceAppContentSmallSharedDataUnmount();
|
||||
int PS4_SYSV_ABI sceAppContentTemporaryDataFormat();
|
||||
int PS4_SYSV_ABI sceAppContentTemporaryDataGetAvailableSpaceKb();
|
||||
int PS4_SYSV_ABI sceAppContentTemporaryDataMount();
|
||||
int PS4_SYSV_ABI sceAppContentTemporaryDataMount2();
|
||||
int PS4_SYSV_ABI sceAppContentTemporaryDataUnmount();
|
||||
int PS4_SYSV_ABI sceAppContentGetPftFlag();
|
||||
int PS4_SYSV_ABI Func_C59A36FF8D7C59DA();
|
||||
int PS4_SYSV_ABI sceAppContentAddcontEnqueueDownloadByEntitlemetId();
|
||||
int PS4_SYSV_ABI sceAppContentAddcontMountByEntitlemetId();
|
||||
int PS4_SYSV_ABI sceAppContentGetAddcontInfoByEntitlementId();
|
||||
int PS4_SYSV_ABI sceAppContentGetAddcontInfoListByIroTag();
|
||||
int PS4_SYSV_ABI sceAppContentGetDownloadedStoreCountry();
|
||||
|
||||
void RegisterlibSceAppContent(Core::Loader::SymbolsResolver* sym);
|
||||
} // namespace Libraries::AppContent
|
@ -27,6 +27,7 @@
|
||||
#include "core/libraries/system/systemservice.h"
|
||||
#include "core/libraries/system/userservice.h"
|
||||
#include "core/libraries/videoout/video_out.h"
|
||||
#include "core/libraries/app_content/app_content.h"
|
||||
|
||||
namespace Libraries {
|
||||
|
||||
@ -59,6 +60,7 @@ void InitHLELibs(Core::Loader::SymbolsResolver* sym) {
|
||||
Libraries::NpTrophy::RegisterlibSceNpTrophy(sym);
|
||||
Libraries::ScreenShot::RegisterlibSceScreenShot(sym);
|
||||
Libraries::LibcInternal::RegisterlibSceLibcInternal(sym);
|
||||
Libraries::AppContent::RegisterlibSceAppContent(sym);
|
||||
}
|
||||
|
||||
} // namespace Libraries
|
||||
|
Loading…
Reference in New Issue
Block a user