Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
fa4b9cd
6871: Started cleanup
tuj Apr 12, 2026
3bea551
6871: Fixed issues regarding error handling
tuj Apr 12, 2026
da6cbc9
6871: Added null guards
tuj Apr 13, 2026
2c081da
6871: Cleaned up promises
tuj Apr 13, 2026
c27265a
6871: Minor fixes
tuj Apr 13, 2026
7582a4b
6871: Cleaned up logger use
tuj Apr 13, 2026
f41f43d
6871: Removed todos
tuj Apr 13, 2026
95b1869
6871: Clean up
tuj Apr 13, 2026
2daeeeb
6871: Changed to also use rtx in client
tuj Apr 13, 2026
f285ea2
6871: Added claude plans
tuj Apr 13, 2026
3cb9987
7203: Added vitest for javascript unit tests. Converted playwright un…
tuj Apr 17, 2026
014ebd6
7203: Added github actions for vitest
tuj Apr 17, 2026
6937ca8
Removed plan
tuj Apr 17, 2026
88c7122
7203: Fixed merge
tuj Apr 18, 2026
2fc8d90
Fixed forceRetch issue
tuj Apr 18, 2026
279dc38
7203: Refactored to use shared function for checksum calculation
tuj Apr 18, 2026
a98dded
Merge branch 'feature/vitest' into feature/client-rtx-migration
tuj Apr 18, 2026
cf06082
7203: Fixed path bugs
tuj Apr 18, 2026
14cf76a
7203: Added tests for client
tuj Apr 18, 2026
af2ab96
7203: Added fixed for error paths
tuj Apr 19, 2026
4e5206c
7203: Changed from setInteval to setTimeout to avoid overlapping pulls
tuj Apr 19, 2026
b53c1c9
7203: Fixed timeout restart bug
tuj Apr 19, 2026
787d6f0
7203: Refactored getScreen
tuj Apr 20, 2026
7d04d75
7228: Fixed checksums default
tuj Apr 20, 2026
6677de8
7228: Handled case where idFromPath returns false
tuj Apr 20, 2026
0322aac
7228: Use campaignChanged to decide whether to refetch campaign regio…
tuj Apr 20, 2026
2fcf4ad
7228: Added early break when no template is set for slide
tuj Apr 20, 2026
b66dc39
7228: Fixed relationsChecksum default
tuj Apr 20, 2026
52267d5
7228: Added bind to stop
tuj Apr 20, 2026
5626463
7228: Fixed parallelization of fetches
tuj Apr 20, 2026
acb6444
7203: Added guards against infinite loops in queryAllPages
tuj Apr 20, 2026
4acf832
7228: Fixed naming issue in api spec
tuj Apr 20, 2026
68cf86d
7228: Fallback to cached data on query errors
tuj Apr 20, 2026
17202b2
7228: Added keepUnusedDataFor to 30 days
tuj Apr 20, 2026
e982605
7228: Added guard against idFromPath = false
tuj Apr 20, 2026
e4686ad
7228: Changed to fetch all pages
tuj Apr 20, 2026
3c1a26a
7228: Fixed campaign deduplication
tuj Apr 20, 2026
f81db42
7228: Fixed dispatch unsubscribe
tuj Apr 20, 2026
f54962a
7228: Cleaned up implementation
tuj Apr 20, 2026
46d77aa
7228: Fixed grid column row switch
tuj Apr 20, 2026
345894a
7228: Added guard against race condition
tuj Apr 20, 2026
f75018f
7228: Fixed listener cleanup when in preview mode
tuj Apr 20, 2026
7f00ab5
7228: Fixed error message clearing
tuj Apr 20, 2026
ed6f7fa
7228: Filter out invalid slides for touch-region
tuj Apr 20, 2026
0e13920
7228: Fixed stale closure in region listener
tuj Apr 20, 2026
c875f87
7228: Fixed minor issues
tuj Apr 20, 2026
879056b
7228: Make sure feedData is always set to array
tuj Apr 20, 2026
77989c5
7228: Fixed keyDown for touch button
tuj Apr 20, 2026
e08e5c0
7228: Fixed race conditions with setTimeout flows
tuj Apr 20, 2026
eb86cb9
7228: Fixed broken tests and bugs
tuj Apr 20, 2026
0397b8c
7228: Fixed unsubscribes
tuj Apr 20, 2026
e54d6f6
7228: Fixed bugs raised by review
tuj Apr 20, 2026
723c59f
7228: Added refs and guards
tuj Apr 20, 2026
55a59a1
7228: Fixed issues
tuj Apr 20, 2026
278e678
7228: Moved values to constants and defaults
tuj Apr 20, 2026
4a3495a
7228: Cleaned up minor issues
tuj Apr 20, 2026
3418ed2
7223: Changed from event based to React Context based
tuj Apr 20, 2026
f3886e4
7228: Fixed to use shared query
tuj Apr 20, 2026
45dcd96
7228: Fixed possible bug that could lead to broken slide iteration
tuj Apr 20, 2026
222b295
7228: Fixed bugs
tuj Apr 20, 2026
0d79d37
7228: Fixed bugs
tuj Apr 20, 2026
40db3ab
7228: Reorganized files
tuj Apr 21, 2026
b289428
7228: Changed unsubscribe to reset
tuj Apr 21, 2026
1fc98eb
7228: Moved logger to core
tuj Apr 21, 2026
8b3cc01
7228: Added e2e tests for client
tuj Apr 21, 2026
659e5c6
7228: Fixed invalidation setup in client
tuj Apr 21, 2026
8c714c1
7228: Avoid recreating base query for each request
tuj Apr 21, 2026
2455209
7228: Fixed tests
tuj Apr 21, 2026
cd17097
7228: Fixed for possible orphaned interval
tuj Apr 21, 2026
173eeca
7228: Added tests for content service
tuj Apr 21, 2026
17b3a89
7228: Added tests for remaining code
tuj Apr 22, 2026
a304c8c
7228: Added tests
tuj Apr 22, 2026
2e4f9a3
7228: Added documentation
tuj Apr 22, 2026
98ac914
7228: Fixed slide error timeout cleanup
tuj Apr 22, 2026
a9838c0
7228: Cleanup
tuj Apr 24, 2026
08d055e
7228: Fixed merge
tuj Apr 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ tasks:
test:frontend-local:
desc: "Runs frontend tests from the local machine."
cmds:
- BASE_URL="https://display.local.itkdev.dk" npx playwright test
- BASE_URL="https://display.local.itkdev.dk" npx playwright test {{.CLI_ARGS}}

test:frontend-local-ui:
desc: "Runs frontend tests from the local machine in UI mode."
Expand All @@ -215,9 +215,10 @@ tasks:
- task compose -- exec phpfpm composer update-api-spec

generate:redux-toolkit-api:
desc: "Generate the RTK Query api slices (in assets/shared/redux/)."
desc: "Generate the RTK Query api slices."
cmds:
- task compose -- exec node npx @rtk-query/codegen-openapi /app/assets/shared/redux/openapi-config.js
- task compose -- exec node npx @rtk-query/codegen-openapi /app/assets/admin/redux/openapi-config.js
- task compose -- exec node npx @rtk-query/codegen-openapi /app/assets/client/redux/openapi-config.js

app:update:
desc: "Migrate to latest database schema and update installed templates"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { useTranslation } from "react-i18next";
import { useNavigate } from "react-router-dom";
import Form from "react-bootstrap/Form";
import { Button } from "react-bootstrap";
import { usePostV2UserActivationCodesActivateMutation } from "../../../shared/redux/enhanced-api.ts";
import { usePostV2UserActivationCodesActivateMutation } from "../../redux/enhanced-api.ts";
import {
displaySuccess,
displayError,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useState, useEffect } from "react";
import { useTranslation } from "react-i18next";
import { useNavigate } from "react-router-dom";
import { usePostV2UserActivationCodesMutation } from "../../../shared/redux/enhanced-api.ts";
import { usePostV2UserActivationCodesMutation } from "../../redux/enhanced-api.ts";
import ActivationCodeForm from "./activation-code-form";
import {
displaySuccess,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import {
enhancedApi,
useDeleteV2UserActivationCodesByIdMutation,
useGetV2UserActivationCodesQuery,
} from "../../../shared/redux/enhanced-api.ts";
} from "../../redux/enhanced-api.ts";

/**
* The Activation Code list component.
Expand Down
2 changes: 1 addition & 1 deletion assets/admin/components/feed-sources/feed-source-edit.jsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useParams } from "react-router-dom";
import { useGetV2FeedSourcesByIdQuery } from "../../../shared/redux/enhanced-api.ts";
import { useGetV2FeedSourcesByIdQuery } from "../../redux/enhanced-api.ts";
import FeedSourceManager from "./feed-source-manager";

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import FeedSourceForm from "./feed-source-form";
import {
usePostV2FeedSourcesMutation,
usePutV2FeedSourcesByIdMutation,
} from "../../../shared/redux/enhanced-api.ts";
} from "../../redux/enhanced-api.ts";
import {
displayError,
displaySuccess,
Expand Down
2 changes: 1 addition & 1 deletion assets/admin/components/feed-sources/feed-sources-list.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
useGetV2FeedSourcesQuery,
useDeleteV2FeedSourcesByIdMutation,
useGetV2FeedSourcesByIdSlidesQuery,
} from "../../../shared/redux/enhanced-api.ts";
} from "../../redux/enhanced-api.ts";
import ListContext from "../../context/list-context";
import ContentBody from "../util/content-body/content-body";
import List from "../util/list/list";
Expand Down
2 changes: 1 addition & 1 deletion assets/admin/components/groups/group-create.jsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useState, useEffect } from "react";
import { useTranslation } from "react-i18next";
import { useNavigate } from "react-router-dom";
import { usePostV2ScreenGroupsMutation } from "../../../shared/redux/enhanced-api.ts";
import { usePostV2ScreenGroupsMutation } from "../../redux/enhanced-api.ts";
import GroupForm from "./group-form";
import {
displaySuccess,
Expand Down
2 changes: 1 addition & 1 deletion assets/admin/components/groups/group-edit.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { useTranslation } from "react-i18next";
import {
useGetV2ScreenGroupsByIdQuery,
usePutV2ScreenGroupsByIdMutation,
} from "../../../shared/redux/enhanced-api.ts";
} from "../../redux/enhanced-api.ts";
import {
displaySuccess,
displayError,
Expand Down
2 changes: 1 addition & 1 deletion assets/admin/components/groups/groups-columns.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ import ColumnHoc from "../util/column-hoc";
import SelectColumnHoc from "../util/select-column-hoc";
import useModal from "../../context/modal-context/modal-context-hook.jsx";
import { useDispatch } from "react-redux";
import { enhancedApi } from "../../../shared/redux/enhanced-api.ts";
import idFromUrl from "../util/helpers/id-from-url.jsx";
import getAllPages from "../util/helpers/get-all-pages.js";
import { Link } from "react-router-dom";
import { Button } from "react-bootstrap";
import { enhancedApi } from "../../redux/enhanced-api.ts";

function ScreensButton({ group }) {
const { t } = useTranslation("common", { keyPrefix: "groups-columns" });
Expand Down
2 changes: 1 addition & 1 deletion assets/admin/components/groups/groups-list.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import {
useGetV2ScreenGroupsQuery,
useGetV2ScreenGroupsByIdScreensQuery,
useDeleteV2ScreenGroupsByIdMutation,
} from "../../../shared/redux/enhanced-api.ts";
} from "../../redux/enhanced-api.ts";

/**
* The groups list component.
Expand Down
2 changes: 1 addition & 1 deletion assets/admin/components/media/media-create.jsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { useState, useEffect } from "react";
import { useTranslation } from "react-i18next";
import { usePostMediaCollectionMutation } from "../../../shared/redux/enhanced-api.ts";
import { usePostMediaCollectionMutation } from "../../redux/enhanced-api.ts";
import MediaForm from "./media-form";
import {
displayError,
Expand Down
2 changes: 1 addition & 1 deletion assets/admin/components/media/media-list.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import {
import {
useGetV2MediaQuery,
useDeleteV2MediaByIdMutation,
} from "../../../shared/redux/enhanced-api.ts";
} from "../../redux/enhanced-api.ts";
import FormCheckbox from "../util/forms/form-checkbox";
import "./media-list.scss";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import FormCheckbox from "../util/forms/form-checkbox";
import {
useGetV2PlaylistsByIdSlidesQuery,
useGetV2PlaylistsQuery,
} from "../../../shared/redux/enhanced-api.ts";
} from "../../redux/enhanced-api.ts";
import ScreenGanttChart from "../screen/util/screen-gantt-chart";

/**
Expand Down
2 changes: 1 addition & 1 deletion assets/admin/components/playlist/campaign-form.jsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { useTranslation } from "react-i18next";
import idFromUrl from "../util/helpers/id-from-url";
import { enhancedApi } from "../../../shared/redux/enhanced-api.ts";
import { enhancedApi } from "../../redux/enhanced-api.ts";
import ContentBody from "../util/content-body/content-body";
import SelectScreensTable from "../util/multi-and-table/select-screens-table";
import SelectGroupsTable from "../util/multi-and-table/select-groups-table";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { useEffect, useState } from "react";
import { useParams } from "react-router-dom";
import PlaylistCampaignManager from "./playlist-campaign-manager";
import idFromUrl from "../util/helpers/id-from-url";
import { useGetV2PlaylistsByIdQuery } from "../../../shared/redux/enhanced-api.ts";
import { useGetV2PlaylistsByIdQuery } from "../../redux/enhanced-api.ts";

/**
* The playlist/campaign edit component.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import {
useDeleteV2PlaylistsByIdMutation,
useGetV2PlaylistsByIdSlidesQuery,
useGetV2PlaylistsQuery,
} from "../../../shared/redux/enhanced-api.ts";
} from "../../redux/enhanced-api.ts";

/**
* The shared list component.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import {
enhancedApi,
usePutV2PlaylistsByIdMutation,
usePostV2PlaylistsMutation,
} from "../../../shared/redux/enhanced-api.ts";
} from "../../redux/enhanced-api.ts";
import { set } from "lodash/object";

/**
Expand Down
2 changes: 1 addition & 1 deletion assets/admin/components/playlist/playlist-form.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { useTranslation } from "react-i18next";
import { Alert } from "react-bootstrap";
import UserContext from "../../context/user-context";
import Schedule from "../util/schedule/schedule";
import { useGetV2TenantsQuery } from "../../../shared/redux/enhanced-api.ts";
import { useGetV2TenantsQuery } from "../../redux/enhanced-api.ts";
import ContentBody from "../util/content-body/content-body";
import TenantsDropdown from "../util/forms/multiselect-dropdown/tenants/tenants-dropdown";

Expand Down
2 changes: 1 addition & 1 deletion assets/admin/components/playlist/playlists-columns.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ import DateValue from "../util/date-value";
import PublishingStatus from "../util/publishingStatus";
import useModal from "../../context/modal-context/modal-context-hook.jsx";
import { useDispatch } from "react-redux";
import { enhancedApi } from "../../../shared/redux/enhanced-api.ts";
import idFromUrl from "../util/helpers/id-from-url.jsx";
import getAllPages from "../util/helpers/get-all-pages.js";
import { Link } from "react-router-dom";
import { Button } from "react-bootstrap";
import { enhancedApi } from "../../redux/enhanced-api.ts";

function SlidesButton({ playlist }) {
const { t } = useTranslation("common", { keyPrefix: "playlists-columns" });
Expand Down
2 changes: 1 addition & 1 deletion assets/admin/components/playlist/shared-playlists.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import ListContext from "../../context/list-context";
import ContentBody from "../util/content-body/content-body";
import { displayError } from "../util/list/toast-component/display-toast";
import getSharedPlaylistColumns from "./shared-playlists-column";
import { useGetV2PlaylistsQuery } from "../../../shared/redux/enhanced-api.ts";
import { useGetV2PlaylistsQuery } from "../../redux/enhanced-api.ts";

/**
* The list component for shared playlists.
Expand Down
2 changes: 1 addition & 1 deletion assets/admin/components/screen/screen-edit.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { useEffect, useState } from "react";
import { useParams } from "react-router-dom";
import idFromUrl from "../util/helpers/id-from-url";
import ScreenManager from "./screen-manager";
import { useGetV2ScreensByIdQuery } from "../../../shared/redux/enhanced-api.ts";
import { useGetV2ScreensByIdQuery } from "../../redux/enhanced-api.ts";

/**
* The screen edit component.
Expand Down
2 changes: 1 addition & 1 deletion assets/admin/components/screen/screen-form.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import idFromUrl from "../util/helpers/id-from-url";
import {
useGetV2LayoutsQuery,
enhancedApi,
} from "../../../shared/redux/enhanced-api.ts";
} from "../../redux/enhanced-api.ts";
import FormCheckbox from "../util/forms/form-checkbox";
import Preview from "../preview/preview";
import StickyFooter from "../util/sticky-footer";
Expand Down
2 changes: 1 addition & 1 deletion assets/admin/components/screen/screen-list.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import useModal from "../../context/modal-context/modal-context-hook";
import {
useGetV2ScreensQuery,
useDeleteV2ScreensByIdMutation,
} from "../../../shared/redux/enhanced-api.ts";
} from "../../redux/enhanced-api.ts";
import {
displaySuccess,
displayError,
Expand Down
2 changes: 1 addition & 1 deletion assets/admin/components/screen/screen-manager.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { useNavigate } from "react-router-dom";
import {
usePostV2ScreensMutation,
usePutV2ScreensByIdMutation,
} from "../../../shared/redux/enhanced-api.ts";
} from "../../redux/enhanced-api.ts";
import ScreenForm from "./screen-form";
import {
displaySuccess,
Expand Down
2 changes: 1 addition & 1 deletion assets/admin/components/screen/screen-status.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {
import { useNavigate } from "react-router-dom";
import { useDispatch } from "react-redux";
import idFromUrl from "../util/helpers/id-from-url";
import { enhancedApi } from "../../../shared/redux/enhanced-api.ts";
import { enhancedApi } from "../../redux/enhanced-api.ts";
import { displayError } from "../util/list/toast-component/display-toast";
import FormInput from "../util/forms/form-input";
import AdminConfigLoader from "../util/admin-config-loader.js";
Expand Down
105 changes: 105 additions & 0 deletions assets/admin/components/screen/util/campaign-icon.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
import { useEffect, useState } from "react";
import { useDispatch } from "react-redux";
import { useTranslation } from "react-i18next";
import Spinner from "react-bootstrap/Spinner";
import idFromUrl from "../../util/helpers/id-from-url";
import calculateIsPublished from "../../util/helpers/calculate-is-published";
import {
enhancedApi,
useGetV2ScreensByIdCampaignsQuery,
useGetV2ScreensByIdScreenGroupsQuery,
} from "../../../redux/enhanced-api.ts";

/**
* An icon to show if the screen has an active campaign.
*
* @param {object} props - The props.
* @param {string} props.id The id of the screen.
* @param {number} props.delay Delay the fetch.
* @returns {object} The campaign icon.
*/
function CampaignIcon({ id, delay = 1000 }) {
const { t } = useTranslation("common", { keyPrefix: "campaign-icon" });
const dispatch = useDispatch();
const [isOverriddenByCampaign, setIsOverriddenByCampaign] = useState(null);
const [screenCampaignsChecked, setScreenCampaignsChecked] = useState(false);
const [allCampaigns, setAllCampaigns] = useState([]);
const [getData, setGetData] = useState(false);

const { data: campaigns, isLoading } = useGetV2ScreensByIdCampaignsQuery(
{ id },
{ skip: !getData || !id },
);
const { data: groups, isLoading: isLoadingScreenGroups } =
useGetV2ScreensByIdScreenGroupsQuery({ id }, { skip: !getData || !id });

useEffect(() => {
if (campaigns) {
setAllCampaigns(
campaigns["hydra:member"].map(({ campaign }) => campaign),
);
setScreenCampaignsChecked(true);
}
}, [campaigns]);

useEffect(() => {
if (groups && !isOverriddenByCampaign && screenCampaignsChecked) {
groups["hydra:member"].forEach((group) => {
dispatch(
enhancedApi.endpoints.getV2ScreenGroupsByIdCampaigns.initiate({
id: idFromUrl(group["@id"]),
}),
).then((result) => {
let allCampaignsCopy = [...allCampaigns];
if (allCampaignsCopy.length > 0 && result.data) {
allCampaignsCopy = allCampaignsCopy.concat(
result.data["hydra:member"].map(({ campaign }) => campaign),
);
}
setAllCampaigns(allCampaignsCopy);
});
});
}
}, [groups, screenCampaignsChecked]);

useEffect(() => {
if (allCampaigns.length > 0 && !isOverriddenByCampaign) {
allCampaigns.forEach(({ published }) => {
if (calculateIsPublished(published)) {
setIsOverriddenByCampaign(true);
}
});
}
}, [allCampaigns]);

useEffect(() => {
const timeout = setTimeout(() => {
setGetData(true);
}, delay);

return () => {
clearTimeout(timeout);
};
}, []);

if (!getData || isLoading || isLoadingScreenGroups) {
return (
<div style={{ height: "38px" }}>
<Spinner
as="span"
animation="border"
size="sm"
role="status"
aria-hidden="true"
className="m-1"
/>
</div>
);
}

return isOverriddenByCampaign
? t("overridden-by-campaign")
: t("not-overridden-by-campaign");
}

export default CampaignIcon;
2 changes: 1 addition & 1 deletion assets/admin/components/screen/util/campaigns-button.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import idFromUrl from "../../util/helpers/id-from-url.jsx";
import getAllPages from "../../util/helpers/get-all-pages.js";
import { useDispatch } from "react-redux";
import useModal from "../../../context/modal-context/modal-context-hook.jsx";
import { enhancedApi } from "../../../../shared/redux/enhanced-api.ts";
import { Button } from "react-bootstrap";
import { enhancedApi } from "../../../redux/enhanced-api.ts";

function getAllScreenGroupCampaigns(dispatch, screenGroupIds = []) {
return screenGroupIds.reduce(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import Grid from "./grid";
import { useTranslation } from "react-i18next";
import idFromUrl from "../../util/helpers/id-from-url";
import PlaylistDragAndDrop from "../../playlist-drag-and-drop/playlist-drag-and-drop";
import { enhancedApi } from "../../../../shared/redux/enhanced-api.ts";
import { enhancedApi } from "../../../redux/enhanced-api.ts";
import useFetchDataHook from "../../util/fetch-data-hook.js";
import mapToIds from "../../util/helpers/map-to-ids.js";
import "./grid.scss";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import idFromUrl from "../../util/helpers/id-from-url";
import getAllPages from "../../util/helpers/get-all-pages.js";
import { Button } from "react-bootstrap";
import useModal from "../../../context/modal-context/modal-context-hook.jsx";
import { enhancedApi } from "../../../../shared/redux/enhanced-api.ts";
import { useDispatch } from "react-redux";
import { Link } from "react-router-dom";
import { enhancedApi } from "../../../redux/enhanced-api.ts";

function ScreenGroupsButton({ screen }) {
const { t } = useTranslation("common", { keyPrefix: "screen-columns" });
Expand Down
2 changes: 1 addition & 1 deletion assets/admin/components/slide/content/feed-selector.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { useDispatch } from "react-redux";
import {
enhancedApi,
useGetV2FeedSourcesQuery,
} from "../../../../shared/redux/enhanced-api.ts";
} from "../../../redux/enhanced-api.ts";
import MultiSelectComponent from "../../util/forms/multiselect-dropdown/multi-dropdown";
import idFromUrl from "../../util/helpers/id-from-url";
import ContentForm from "./content-form";
Expand Down
Loading
Loading