Skip to content
This repository was archived by the owner on Jul 28, 2025. It is now read-only.

Commit 66b4c8a

Browse files
committed
guard isDataArray function
1 parent d63aa31 commit 66b4c8a

File tree

5 files changed

+16
-6
lines changed

5 files changed

+16
-6
lines changed

src/components/cellTypes/TaskCell.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,15 @@ const TaskCell = (taskProps: CellComponentProps) => {
1414
const { defaultCell } = taskProps;
1515
const { cell, column, table, row } = defaultCell;
1616
const { view } = table.options.meta;
17+
const tableColumn = column.columnDef as TableColumn;
1718
useEffect(() => {
1819
let taskValue = cell.getValue();
1920
// Check if there are tasks in the cell
2021
if (taskValue) {
2122
taskRef.current.innerHTML = "";
2223
if (
23-
(column.columnDef as TableColumn).config.task_hide_completed &&
24-
DataviewService.getDataviewAPI().isDataArray(taskValue)
24+
tableColumn.config.task_hide_completed &&
25+
DataviewService.isDataArray(taskValue)
2526
) {
2627
taskValue = taskValue
2728
.where((t: STask) => !t.completed)

src/services/DataviewService.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Notice } from "obsidian";
2-
import { DataviewApi, getAPI, isPluginEnabled, STask } from "obsidian-dataview";
2+
import { DataArray, DataviewApi, getAPI, isPluginEnabled, STask } from "obsidian-dataview";
33
import { Literal, WrappedLiteral } from "obsidian-dataview/lib/data-model/value";
4+
import { LOGGER } from "./Logger";
45
class DataviewProxy {
56

67
private static instance: DataviewProxy;
@@ -38,6 +39,14 @@ class DataviewProxy {
3839
return (value as STask[]).every(v => this.isStasks(v));
3940
}
4041

42+
isDataArray(value: Literal): value is DataArray<unknown> {
43+
try {
44+
return this.getDataviewAPI().isDataArray(value);
45+
} catch (e) {
46+
LOGGER.error(`Error while checking if value is DataArray: ${e.message}`)
47+
return false;
48+
}
49+
}
4150
/**
4251
* Singleton instance
4352
* @returns {VaultManager}

src/services/ParseService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class Parse {
4242
return literal;
4343
}
4444

45-
if (DataviewService.getDataviewAPI().isDataArray(literal)) {
45+
if (DataviewService.isDataArray(literal)) {
4646
literal = literal.values
4747
}
4848

src/services/parseServiceHelpers/SelectParser.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class SelectParser extends TypeParser<string> {
1717
case 'object':
1818
if (DateTime.isDateTime(wrapped.value)) {
1919
parsedValue = Db.coreFns.luxon.dateToString(wrapped.value, this.config.datetime_format);
20-
} else if (DataviewService.getDataviewAPI().isDataArray(wrapped.value)) {
20+
} else if (DataviewService.isDataArray(wrapped.value)) {
2121
parsedValue = this.parseArrayToText(
2222
(wrapped.value.values as Literal[])
2323
);

src/services/parseServiceHelpers/TextParser.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class TextParser extends TypeParser<string | DataObject> {
1919
return Db.coreFns.luxon.dateToString(wrapped.value, this.config.datetime_format);
2020
}
2121

22-
if (DataviewService.getDataviewAPI().isDataArray(wrapped.value)) {
22+
if (DataviewService.isDataArray(wrapped.value)) {
2323
return this.parseArrayToText(
2424
(wrapped.value.values as Literal[])
2525
);

0 commit comments

Comments
 (0)