Skip to content

Commit

Permalink
Simplify entity sources (#17770)
Browse files Browse the repository at this point in the history
  • Loading branch information
emontnemery authored Sep 5, 2023
1 parent 32472ca commit 085b26d
Showing 1 changed file with 15 additions and 36 deletions.
51 changes: 15 additions & 36 deletions src/data/entity_sources.ts
Original file line number Diff line number Diff line change
@@ -1,46 +1,25 @@
import { timeCachePromiseFunc } from "../common/util/time-cache-function-promise";
import { HomeAssistant } from "../types";

interface EntitySourceConfigEntry {
source: "config_entry";
interface EntitySource {
domain: string;
custom_component: boolean;
config_entry: string;
}

interface EntitySourcePlatformConfig {
source: "platform_config";
domain: string;
custom_component: boolean;
}
export type EntitySources = Record<string, EntitySource>;

export type EntitySources = Record<
string,
EntitySourceConfigEntry | EntitySourcePlatformConfig
>;

const fetchEntitySources = (
hass: HomeAssistant,
entity_id?: string
): Promise<EntitySources> =>
hass.callWS({
type: "entity/source",
entity_id,
});
const fetchEntitySources = (hass: HomeAssistant): Promise<EntitySources> =>
hass.callWS({ type: "entity/source" });

export const fetchEntitySourcesWithCache = (
hass: HomeAssistant,
entity_id?: string
hass: HomeAssistant
): Promise<EntitySources> =>
entity_id
? fetchEntitySources(hass, entity_id)
: timeCachePromiseFunc(
"_entitySources",
// cache for 30 seconds
30000,
fetchEntitySources,
// We base the cache on number of states. If number of states
// changes we force a refresh
(hass2) => Object.keys(hass2.states).length,
hass
);
timeCachePromiseFunc(
"_entitySources",
// cache for 30 seconds
30000,
fetchEntitySources,
// We base the cache on number of states. If number of states
// changes we force a refresh
(hass2) => Object.keys(hass2.states).length,
hass
);

0 comments on commit 085b26d

Please sign in to comment.