refactor: more cid parseInt changes

This commit is contained in:
Barış Soner Uşaklı
2026-03-01 12:55:00 -05:00
parent a1b77fa033
commit 1b518f0eb2
7 changed files with 30 additions and 23 deletions

View File

@@ -97,7 +97,7 @@
"multer": "2.0.2", "multer": "2.0.2",
"nconf": "0.13.0", "nconf": "0.13.0",
"nodebb-plugin-2factor": "7.6.1", "nodebb-plugin-2factor": "7.6.1",
"nodebb-plugin-composer-default": "10.3.22", "nodebb-plugin-composer-default": "10.3.23",
"nodebb-plugin-dbsearch": "6.4.0", "nodebb-plugin-dbsearch": "6.4.0",
"nodebb-plugin-emoji": "6.0.5", "nodebb-plugin-emoji": "6.0.5",
"nodebb-plugin-emoji-android": "4.1.1", "nodebb-plugin-emoji-android": "4.1.1",

View File

@@ -11,7 +11,7 @@ define('admin/manage/categories', [
], function (translator, Benchpress, categorySelector, api, Sortable, bootbox, alerts) { ], function (translator, Benchpress, categorySelector, api, Sortable, bootbox, alerts) {
Sortable = Sortable.default; Sortable = Sortable.default;
const Categories = {}; const Categories = {};
let newCategoryId = -1; let newCategoryId = '-1';
let sortables; let sortables;
Categories.init = function () { Categories.init = function () {
@@ -261,15 +261,15 @@ define('admin/manage/categories', [
}; };
function itemDidAdd(e) { function itemDidAdd(e) {
newCategoryId = e.to.dataset.cid; newCategoryId = String(e.to.dataset.cid);
} }
function itemDragDidEnd(e) { function itemDragDidEnd(e) {
const isCategoryUpdate = parseInt(newCategoryId, 10) !== -1; const isCategoryUpdate = String(newCategoryId) !== '-1';
// Update needed? // Update needed?
if ((e.newIndex != null && parseInt(e.oldIndex, 10) !== parseInt(e.newIndex, 10)) || isCategoryUpdate) { if ((e.newIndex != null && parseInt(e.oldIndex, 10) !== parseInt(e.newIndex, 10)) || isCategoryUpdate) {
const cid = e.item.dataset.cid; const cid = String(e.item.dataset.cid);
const modified = {}; const modified = {};
// on page 1 baseIndex is 0, on page n baseIndex is (n - 1) * ajaxify.data.categoriesPerPage // on page 1 baseIndex is 0, on page n baseIndex is (n - 1) * ajaxify.data.categoriesPerPage
// this makes sure order is correct when drag & drop is used on pages > 1 // this makes sure order is correct when drag & drop is used on pages > 1
@@ -282,8 +282,8 @@ define('admin/manage/categories', [
modified[cid].parentCid = newCategoryId; modified[cid].parentCid = newCategoryId;
// Show/hide expand buttons after drag completion // Show/hide expand buttons after drag completion
const oldParentCid = parseInt(e.from.getAttribute('data-cid'), 10); const oldParentCid = String(e.from.getAttribute('data-cid') || '');
const newParentCid = parseInt(e.to.getAttribute('data-cid'), 10); const newParentCid = String(e.to.getAttribute('data-cid') || '');
if (oldParentCid !== newParentCid) { if (oldParentCid !== newParentCid) {
const toggle = document.querySelector(`.categories li[data-cid="${newParentCid}"] .toggle`); const toggle = document.querySelector(`.categories li[data-cid="${newParentCid}"] .toggle`);
if (toggle) { if (toggle) {

View File

@@ -160,7 +160,7 @@ define('admin/manage/category', [
label: '[[modules:bootbox.confirm]]', label: '[[modules:bootbox.confirm]]',
className: 'btn-primary', className: 'btn-primary',
callback: function () { callback: function () {
if (!selectedCid || parseInt(selectedCid, 10) === parseInt(ajaxify.data.category.cid, 10)) { if (!selectedCid || String(selectedCid) === String(ajaxify.data.category.cid)) {
return; return;
} }

View File

@@ -68,10 +68,14 @@ define('admin/manage/group', [
const cidSelector = categorySelector.init($('.member-post-cids-selector [component="category-selector"]'), { const cidSelector = categorySelector.init($('.member-post-cids-selector [component="category-selector"]'), {
onSelect: function (selectedCategory) { onSelect: function (selectedCategory) {
let cids = ($('#memberPostCids').val() || '').split(',').map(cid => parseInt(cid, 10)); const cids = new Set(($('#memberPostCids').val() || '').split(',').filter(Boolean));
cids.push(selectedCategory.cid); if (cids.has(String(selectedCategory.cid))) {
cids = cids.filter((cid, index, array) => array.indexOf(cid) === index); cids.delete(String(selectedCategory.cid));
$('#memberPostCids').val(cids.join(',')); } else {
cids.add(String(selectedCategory.cid));
}
$('#memberPostCids').val(Array.from(cids).join(','));
cidSelector.selectCategory(0); cidSelector.selectCategory(0);
return false; return false;
}, },

View File

@@ -233,11 +233,16 @@ define('forum/groups/details', [
const cidSelector = categorySelector.init($('.member-post-cids-selector [component="category-selector"]'), { const cidSelector = categorySelector.init($('.member-post-cids-selector [component="category-selector"]'), {
onSelect: function (selectedCategory) { onSelect: function (selectedCategory) {
let cids = ($('#memberPostCids').val() || '').split(',').map(cid => parseInt(cid, 10)); const cids = new Set(($('#memberPostCids').val() || '').split(',').filter(Boolean));
cids.push(selectedCategory.cid); if (cids.has(String(selectedCategory.cid))) {
cids = cids.filter((cid, index, array) => array.indexOf(cid) === index); cids.delete(String(selectedCategory.cid));
$('#memberPostCids').val(cids.join(',')); } else {
cids.add(String(selectedCategory.cid));
}
$('#memberPostCids').val(Array.from(cids).join(','));
cidSelector.selectCategory(0); cidSelector.selectCategory(0);
return false;
}, },
}); });
}; };

View File

@@ -65,9 +65,7 @@ define('forum/unread', [
// Generate list of default categories based on topic list // Generate list of default categories based on topic list
let defaultCategories = ajaxify.data.topics.reduce((map, topic) => { let defaultCategories = ajaxify.data.topics.reduce((map, topic) => {
const { category } = topic; const { category } = topic;
let { cid } = category; map.set(String(category.cid), category);
cid = utils.isNumber(cid) ? parseInt(cid, 10) : cid;
map.set(cid, category);
return map; return map;
}, new Map()); }, new Map());
defaultCategories = Array.from(defaultCategories.values()); defaultCategories = Array.from(defaultCategories.values());

View File

@@ -95,11 +95,11 @@ define('topicList', [
const categories = d.selectedCids && const categories = d.selectedCids &&
d.selectedCids.length && d.selectedCids.length &&
d.selectedCids.indexOf(parseInt(data.cid, 10)) === -1; !d.selectedCids.includes(parseInt(data.cid, 10));
const filterWatched = d.selectedFilter && const filterWatched = d.selectedFilter &&
d.selectedFilter.filter === 'watched'; d.selectedFilter.filter === 'watched';
const category = d.template.category && const category = d.template.category &&
parseInt(d.cid, 10) !== parseInt(data.cid, 10); String(d.cid) !== String(data.cid);
const preventAlert = !!(categories || filterWatched || category || scheduledTopics.includes(data.tid)); const preventAlert = !!(categories || filterWatched || category || scheduledTopics.includes(data.tid));
hooks.fire('filter:topicList.onNewTopic', { topic: data, preventAlert }).then((result) => { hooks.fire('filter:topicList.onNewTopic', { topic: data, preventAlert }).then((result) => {
@@ -126,14 +126,14 @@ define('topicList', [
const isMain = parseInt(post.topic.mainPid, 10) === parseInt(post.pid, 10); const isMain = parseInt(post.topic.mainPid, 10) === parseInt(post.pid, 10);
const categories = d.selectedCids && const categories = d.selectedCids &&
d.selectedCids.length && d.selectedCids.length &&
d.selectedCids.indexOf(parseInt(post.topic.cid, 10)) === -1; !d.selectedCids.includes(parseInt(post.topic.cid, 10));
const filterNew = d.selectedFilter && const filterNew = d.selectedFilter &&
d.selectedFilter.filter === 'new'; d.selectedFilter.filter === 'new';
const filterWatched = d.selectedFilter && const filterWatched = d.selectedFilter &&
d.selectedFilter.filter === 'watched' && d.selectedFilter.filter === 'watched' &&
!post.topic.isFollowing; !post.topic.isFollowing;
const category = d.template.category && const category = d.template.category &&
parseInt(d.cid, 10) !== parseInt(post.topic.cid, 10); String(d.cid) !== String(post.topic.cid);
const preventAlert = !!(isMain || categories || filterNew || filterWatched || category); const preventAlert = !!(isMain || categories || filterNew || filterWatched || category);
hooks.fire('filter:topicList.onNewPost', { post, preventAlert }).then((result) => { hooks.fire('filter:topicList.onNewPost', { post, preventAlert }).then((result) => {