stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
109 lines • 2.72 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.extractSortValue = void 0;
exports.findLastPinnedChannelIndex = findLastPinnedChannelIndex;
exports.findPinnedAtSortOrder = findPinnedAtSortOrder;
exports.shouldConsiderPinnedChannels = exports.shouldConsiderArchivedChannels = exports.isChannelPinned = exports.isChannelArchived = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var isChannelPinned = channel => {
if (!channel) {
return false;
}
var member = channel.state.membership;
return !!member?.pinned_at;
};
exports.isChannelPinned = isChannelPinned;
var isChannelArchived = channel => {
if (!channel) {
return false;
}
var member = channel.state.membership;
return !!member?.archived_at;
};
exports.isChannelArchived = isChannelArchived;
var shouldConsiderArchivedChannels = filters => {
if (!filters) {
return false;
}
return typeof filters.archived === 'boolean';
};
exports.shouldConsiderArchivedChannels = shouldConsiderArchivedChannels;
var extractSortValue = ({
atIndex,
sort,
targetKey
}) => {
if (!sort) {
return null;
}
var option = null;
if (Array.isArray(sort)) {
option = sort[atIndex] ?? null;
} else {
var index = 0;
for (var key in sort) {
if (index !== atIndex) {
index++;
continue;
}
if (key !== targetKey) {
return null;
}
option = sort;
break;
}
}
return option?.[targetKey] ?? null;
};
exports.extractSortValue = extractSortValue;
var shouldConsiderPinnedChannels = sort => {
var value = extractSortValue({
atIndex: 0,
sort,
targetKey: 'pinned_at'
});
if (typeof value !== 'number') {
return false;
}
return Math.abs(value) === 1;
};
exports.shouldConsiderPinnedChannels = shouldConsiderPinnedChannels;
function findPinnedAtSortOrder({
sort
}) {
if (!sort) {
return null;
}
if (Array.isArray(sort)) {
var _sort = (0, _slicedToArray2.default)(sort, 1),
option = _sort[0];
if (!option?.pinned_at) {
return null;
}
return option.pinned_at;
} else {
if (!sort.pinned_at) {
return null;
}
return sort.pinned_at;
}
}
function findLastPinnedChannelIndex({
channels
}) {
var lastPinnedChannelIndex = null;
for (var channel of channels) {
if (!isChannelPinned(channel)) {
break;
}
if (typeof lastPinnedChannelIndex === 'number') {
lastPinnedChannelIndex++;
} else {
lastPinnedChannelIndex = 0;
}
}
return lastPinnedChannelIndex;
}
//# sourceMappingURL=index.js.map