mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-19 14:53:50 +02:00
Fix group audit logs and add filters
This commit is contained in:
@@ -5726,7 +5726,7 @@ speechSynthesis.getVoices();
|
|||||||
if (this.branch === 'Stable') {
|
if (this.branch === 'Stable') {
|
||||||
this.nextAppUpdateCheck = 14400; // 2hours
|
this.nextAppUpdateCheck = 14400; // 2hours
|
||||||
} else {
|
} else {
|
||||||
this.nextAppUpdateCheck = 1800; // 15mins
|
this.nextAppUpdateCheck = 7200; // 1hour
|
||||||
}
|
}
|
||||||
if (this.autoUpdateVRCX !== 'Off') {
|
if (this.autoUpdateVRCX !== 'Off') {
|
||||||
this.checkForVRCXUpdate();
|
this.checkForVRCXUpdate();
|
||||||
@@ -6685,6 +6685,9 @@ speechSynthesis.getVoices();
|
|||||||
return '';
|
return '';
|
||||||
})
|
})
|
||||||
.then((args) => {
|
.then((args) => {
|
||||||
|
if (!args.json) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
if (
|
if (
|
||||||
this.displayVRCPlusIconsAsAvatar &&
|
this.displayVRCPlusIconsAsAvatar &&
|
||||||
args.json.userIcon
|
args.json.userIcon
|
||||||
@@ -29433,6 +29436,10 @@ speechSynthesis.getVoices();
|
|||||||
n: 100,
|
n: 100,
|
||||||
offset: 0
|
offset: 0
|
||||||
};
|
};
|
||||||
|
if (this.groupMemberModeration.selectedAuditLogTypes.length) {
|
||||||
|
params.eventTypes =
|
||||||
|
this.groupMemberModeration.selectedAuditLogTypes;
|
||||||
|
}
|
||||||
var count = 50; // 5000 max
|
var count = 50; // 5000 max
|
||||||
this.isGroupMembersLoading = true;
|
this.isGroupMembersLoading = true;
|
||||||
try {
|
try {
|
||||||
@@ -29460,9 +29467,44 @@ speechSynthesis.getVoices();
|
|||||||
* @param {{ groupId: string }} params
|
* @param {{ groupId: string }} params
|
||||||
* @return { Promise<{json: any, params}> }
|
* @return { Promise<{json: any, params}> }
|
||||||
*/
|
*/
|
||||||
|
API.getGroupAuditLogTypes = function (params) {
|
||||||
|
return this.call(`groups/${params.groupId}/auditLogTypes`, {
|
||||||
|
method: 'GET'
|
||||||
|
}).then((json) => {
|
||||||
|
var args = {
|
||||||
|
json,
|
||||||
|
params
|
||||||
|
};
|
||||||
|
this.$emit('GROUP:AUDITLOGTYPES', args);
|
||||||
|
return args;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
API.$on('GROUP:AUDITLOGTYPES', function (args) {
|
||||||
|
if ($app.groupMemberModeration.id !== args.params.groupId) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$app.groupMemberModeration.auditLogTypes = args.json;
|
||||||
|
});
|
||||||
|
|
||||||
|
$app.methods.getAuditLogTypeName = function (auditLogType) {
|
||||||
|
if (!auditLogType) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
return auditLogType
|
||||||
|
.replace('group.', '')
|
||||||
|
.replace(/\./g, ' ')
|
||||||
|
.replace(/\b\w/g, (l) => l.toUpperCase());
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {{ groupId: string, eventTypes: array }} params
|
||||||
|
* @return { Promise<{json: any, params}> }
|
||||||
|
*/
|
||||||
API.getGroupLogs = function (params) {
|
API.getGroupLogs = function (params) {
|
||||||
return this.call(`groups/${params.groupId}/auditLogs`, {
|
return this.call(`groups/${params.groupId}/auditLogs`, {
|
||||||
method: 'GET'
|
method: 'GET',
|
||||||
|
params
|
||||||
}).then((json) => {
|
}).then((json) => {
|
||||||
var args = {
|
var args = {
|
||||||
json,
|
json,
|
||||||
@@ -29479,7 +29521,12 @@ speechSynthesis.getVoices();
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (var json of args.json.results) {
|
for (var json of args.json.results) {
|
||||||
$app.groupLogsModerationTable.data.push(json);
|
const existsInData = $app.groupLogsModerationTable.data.some(
|
||||||
|
(dataItem) => dataItem.id === json.id
|
||||||
|
);
|
||||||
|
if (!existsInData) {
|
||||||
|
$app.groupLogsModerationTable.data.push(json);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -31698,6 +31745,8 @@ speechSynthesis.getVoices();
|
|||||||
loading: false,
|
loading: false,
|
||||||
id: '',
|
id: '',
|
||||||
groupRef: {},
|
groupRef: {},
|
||||||
|
auditLogTypes: [],
|
||||||
|
selectedAuditLogTypes: [],
|
||||||
note: '',
|
note: '',
|
||||||
selectedUsers: new Map(),
|
selectedUsers: new Map(),
|
||||||
selectedUsersArray: [],
|
selectedUsersArray: [],
|
||||||
@@ -31743,6 +31792,12 @@ speechSynthesis.getVoices();
|
|||||||
|
|
||||||
$app.data.groupLogsModerationTable = {
|
$app.data.groupLogsModerationTable = {
|
||||||
data: [],
|
data: [],
|
||||||
|
filters: [
|
||||||
|
{
|
||||||
|
prop: ['description'],
|
||||||
|
value: ''
|
||||||
|
}
|
||||||
|
],
|
||||||
tableProps: {
|
tableProps: {
|
||||||
stripe: true,
|
stripe: true,
|
||||||
size: 'mini'
|
size: 'mini'
|
||||||
@@ -31827,9 +31882,12 @@ speechSynthesis.getVoices();
|
|||||||
D.selectedUsersArray = [];
|
D.selectedUsersArray = [];
|
||||||
D.selectedRoles = [];
|
D.selectedRoles = [];
|
||||||
D.groupRef = {};
|
D.groupRef = {};
|
||||||
|
D.auditLogTypes = [];
|
||||||
|
D.selectedAuditLogTypes = [];
|
||||||
API.getCachedGroup({ groupId }).then((args) => {
|
API.getCachedGroup({ groupId }).then((args) => {
|
||||||
D.groupRef = args.ref;
|
D.groupRef = args.ref;
|
||||||
});
|
});
|
||||||
|
API.getGroupAuditLogTypes({ groupId });
|
||||||
this.groupMemberModerationTableForceUpdate = 0;
|
this.groupMemberModerationTableForceUpdate = 0;
|
||||||
D.visible = true;
|
D.visible = true;
|
||||||
this.setGroupMemberModerationTable(this.groupDialog.members);
|
this.setGroupMemberModerationTable(this.groupDialog.members);
|
||||||
|
|||||||
@@ -3195,6 +3195,13 @@ html
|
|||||||
el-button(type="default" @click="getAllGroupLogs(groupMemberModeration.id)" size="mini" icon="el-icon-refresh" :loading="isGroupMembersLoading" circle)
|
el-button(type="default" @click="getAllGroupLogs(groupMemberModeration.id)" size="mini" icon="el-icon-refresh" :loading="isGroupMembersLoading" circle)
|
||||||
span(style="font-size:14px;margin-left:5px;margin-right:5px") {{ groupLogsModerationTable.data.length }}
|
span(style="font-size:14px;margin-left:5px;margin-right:5px") {{ groupLogsModerationTable.data.length }}
|
||||||
br
|
br
|
||||||
|
el-select(v-model="groupMemberModeration.selectedAuditLogTypes" multiple collapse-tags :placeholder="$t('dialog.group_member_moderation.filter_type')")
|
||||||
|
el-option-group(:label="$t('dialog.group_member_moderation.select_type')")
|
||||||
|
el-option.x-friend-item(v-for="type in groupMemberModeration.auditLogTypes" :key="type" :label="getAuditLogTypeName(type)" :value="type")
|
||||||
|
.detail
|
||||||
|
span.name(v-text="getAuditLogTypeName(type)")
|
||||||
|
el-input(v-model="groupLogsModerationTable.filters[0].value" :placeholder="$t('dialog.group_member_moderation.search_placeholder')" style="display:inline-block;width:150px;margin:10px")
|
||||||
|
br
|
||||||
data-tables(v-bind="groupLogsModerationTable" style="margin-top:10px")
|
data-tables(v-bind="groupLogsModerationTable" style="margin-top:10px")
|
||||||
el-table-column(:label="$t('dialog.group_member_moderation.created_at')" width="170" prop="created_at" sortable)
|
el-table-column(:label="$t('dialog.group_member_moderation.created_at')" width="170" prop="created_at" sortable)
|
||||||
template(v-once #default="scope")
|
template(v-once #default="scope")
|
||||||
@@ -3213,11 +3220,13 @@ html
|
|||||||
template(v-once #default="scope")
|
template(v-once #default="scope")
|
||||||
span(v-if="Object.keys(scope.row.data).length" v-text="JSON.stringify(scope.row.data)")
|
span(v-if="Object.keys(scope.row.data).length" v-text="JSON.stringify(scope.row.data)")
|
||||||
br
|
br
|
||||||
|
br
|
||||||
span.name {{ $t('dialog.group_member_moderation.user_id') }}
|
span.name {{ $t('dialog.group_member_moderation.user_id') }}
|
||||||
br
|
br
|
||||||
el-input(v-model="groupMemberModeration.selectUserId" size="mini" style="margin-top:5px;width:340px" :placeholder="$t('dialog.group_member_moderation.user_id_placeholder')" clearable)
|
el-input(v-model="groupMemberModeration.selectUserId" size="mini" style="margin-top:5px;width:340px" :placeholder="$t('dialog.group_member_moderation.user_id_placeholder')" clearable)
|
||||||
el-button(size="small" @click="selectGroupMemberUserId" :disabled="!groupMemberModeration.selectUserId") {{ $t('dialog.group_member_moderation.select_user') }}
|
el-button(size="small" @click="selectGroupMemberUserId" :disabled="!groupMemberModeration.selectUserId") {{ $t('dialog.group_member_moderation.select_user') }}
|
||||||
br
|
br
|
||||||
|
br
|
||||||
span.name {{ $t('dialog.group_member_moderation.selected_users') }}
|
span.name {{ $t('dialog.group_member_moderation.selected_users') }}
|
||||||
el-button(type="default" @click="clearSelectedGroupMembers" size="mini" icon="el-icon-delete" circle style="margin-left:5px")
|
el-button(type="default" @click="clearSelectedGroupMembers" size="mini" icon="el-icon-delete" circle style="margin-left:5px")
|
||||||
br
|
br
|
||||||
@@ -3226,7 +3235,8 @@ html
|
|||||||
br
|
br
|
||||||
br
|
br
|
||||||
span.name {{ $t('dialog.group_member_moderation.notes') }}
|
span.name {{ $t('dialog.group_member_moderation.notes') }}
|
||||||
el-input.extra(v-model="groupMemberModeration.note" type="textarea" :rows="2" :autosize="{ minRows: 1, maxRows: 20 }" :placeholder="$t('dialog.group_member_moderation.note_placeholder')" size="mini" resize="none")
|
el-input.extra(v-model="groupMemberModeration.note" type="textarea" :rows="2" :autosize="{ minRows: 1, maxRows: 20 }" :placeholder="$t('dialog.group_member_moderation.note_placeholder')" size="mini" resize="none" style="margin-top:5px")
|
||||||
|
br
|
||||||
br
|
br
|
||||||
span.name {{ $t('dialog.group_member_moderation.selected_roles') }}
|
span.name {{ $t('dialog.group_member_moderation.selected_roles') }}
|
||||||
br
|
br
|
||||||
@@ -3236,6 +3246,7 @@ html
|
|||||||
.detail
|
.detail
|
||||||
span.name(v-text="role.name")
|
span.name(v-text="role.name")
|
||||||
br
|
br
|
||||||
|
br
|
||||||
span.name {{ $t('dialog.group_member_moderation.actions') }}
|
span.name {{ $t('dialog.group_member_moderation.actions') }}
|
||||||
br
|
br
|
||||||
el-button(@click="groupMembersAddRoles" :disabled="!groupMemberModeration.selectedRoles.length || groupMemberModeration.progressCurrent || !hasGroupPermission(groupDialog.ref, 'group-roles-assign')") {{ $t('dialog.group_member_moderation.add_roles') }}
|
el-button(@click="groupMembersAddRoles" :disabled="!groupMemberModeration.selectedRoles.length || groupMemberModeration.progressCurrent || !hasGroupPermission(groupDialog.ref, 'group-roles-assign')") {{ $t('dialog.group_member_moderation.add_roles') }}
|
||||||
|
|||||||
@@ -1312,6 +1312,9 @@
|
|||||||
},
|
},
|
||||||
"group_member_moderation": {
|
"group_member_moderation": {
|
||||||
"header": "Group Member Moderation",
|
"header": "Group Member Moderation",
|
||||||
|
"filter_type": "Filter Type",
|
||||||
|
"select_type": "Select Type",
|
||||||
|
"search_placeholder": "Search",
|
||||||
"members": "Members",
|
"members": "Members",
|
||||||
"bans": "Bans",
|
"bans": "Bans",
|
||||||
"invites": "Invites",
|
"invites": "Invites",
|
||||||
|
|||||||
@@ -123,12 +123,12 @@ html
|
|||||||
.detail
|
.detail
|
||||||
span.extra
|
span.extra
|
||||||
span.time {{ feed.created_at | formatDate }}
|
span.time {{ feed.created_at | formatDate }}
|
||||||
| 👉 #[span.name(v-text="feed.message")]
|
| 👉 #[span.name(v-text="feed.senderUsername")] #[span(v-text="feed.message")]
|
||||||
div(v-else-if="feed.type === 'groupChange'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
div(v-else-if="feed.type === 'groupChange'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||||||
.detail
|
.detail
|
||||||
span.extra
|
span.extra
|
||||||
span.time {{ feed.created_at | formatDate }}
|
span.time {{ feed.created_at | formatDate }}
|
||||||
| 🏷️ #[span.name(v-text="feed.senderUsername")] #[span.name(v-text="feed.message")]
|
| 🏷️ #[span.name(v-text="feed.senderUsername")] #[span(v-text="feed.message")]
|
||||||
div(v-else-if="feed.type === 'group.announcement'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
div(v-else-if="feed.type === 'group.announcement'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||||||
.detail
|
.detail
|
||||||
span.extra
|
span.extra
|
||||||
@@ -353,12 +353,12 @@ html
|
|||||||
.detail
|
.detail
|
||||||
span.extra
|
span.extra
|
||||||
span.time {{ feed.created_at | formatDate }}
|
span.time {{ feed.created_at | formatDate }}
|
||||||
| #[span.name(v-text="feed.message")]
|
| #[span.name(v-text="feed.senderUsername")] #[span(v-text="feed.message")]
|
||||||
div(v-else-if="feed.type === 'groupChange'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
div(v-else-if="feed.type === 'groupChange'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||||||
.detail
|
.detail
|
||||||
span.extra
|
span.extra
|
||||||
span.time {{ feed.created_at | formatDate }}
|
span.time {{ feed.created_at | formatDate }}
|
||||||
| #[span.name(v-text="feed.senderUsername")] #[span.name(v-text="feed.message")]
|
| #[span.name(v-text="feed.senderUsername")] #[span(v-text="feed.message")]
|
||||||
div(v-else-if="feed.type === 'group.announcement'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
div(v-else-if="feed.type === 'group.announcement'" class="x-friend-item" :class="{ friend: feed.isFriend, favorite: feed.isFavorite }")
|
||||||
.detail
|
.detail
|
||||||
span.extra
|
span.extra
|
||||||
|
|||||||
Reference in New Issue
Block a user