Skip to content

Commit

Permalink
Fix authentication of query page (#858)
Browse files Browse the repository at this point in the history
Co-authored-by: Marc Lichtman <marcll@vt.edu>
  • Loading branch information
Jade-Codes and 777arc committed Apr 6, 2024
1 parent cdefde5 commit be54046
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 15 deletions.
6 changes: 4 additions & 2 deletions client/src/api/iqdata/IQDataClientFactory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,22 @@ import { LocalClient } from './LocalClient';
import { IQDataClient } from './IQDataClient';
import { FileWithDirectoryAndFileHandle } from 'browser-fs-access';
import { IPublicClientApplication } from '@azure/msal-browser';
import { AppConfig } from '../config/queries';

export const IQDataClientFactory = (
type: string,
files: FileWithDirectoryAndFileHandle[],
dataSources: Record<string, DataSource>,
instance: IPublicClientApplication,
config: AppConfig
): IQDataClient => {
switch (type) {
case CLIENT_TYPE_API:{
if (!instance || !instance.getAllAccounts || instance.getAllAccounts().length === 0) {
return new ApiClient(null, null);
return new ApiClient(null, null, config);
}
const accounts = instance.getAllAccounts();
return new ApiClient(instance, accounts[0]);
return new ApiClient(instance, accounts[0], config);
}
case CLIENT_TYPE_LOCAL:
return new LocalClient(files);
Expand Down
8 changes: 6 additions & 2 deletions client/src/api/iqdata/Queries.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { useMeta } from '@/api/metadata/queries';
import { useMsal } from '@azure/msal-react';
import { applyProcessing } from '@/utils/fetch-more-data-source';
import { groupContiguousIndexes } from '@/utils/group';
import { useConfigQuery } from '../config/queries';

declare global {
interface Window {
Expand Down Expand Up @@ -82,7 +83,9 @@ export function useGetIQData(

const { instance } = useMsal();

const iqDataClient = IQDataClientFactory(type, filesQuery.data, dataSourcesQuery.data, instance);
const { data: config } = useConfigQuery();

const iqDataClient = IQDataClientFactory(type, filesQuery.data, dataSourcesQuery.data, instance, config);

// fetches iqData, this happens first, and the iqData is in one big continuous chunk
const { data: iqData } = useQuery({
Expand Down Expand Up @@ -211,7 +214,8 @@ export function useGetMinimapIQ(type: string, account: string, container: string
const { data: meta } = useMeta(type, account, container, filePath);
const { filesQuery, dataSourcesQuery } = useUserSettings();
const { instance } = useMsal();
const iqDataClient = IQDataClientFactory(type, filesQuery.data, dataSourcesQuery.data, instance);
const { data: config } = useConfigQuery();
const iqDataClient = IQDataClientFactory(type, filesQuery.data, dataSourcesQuery.data, instance, config);
const minimapQuery = useQuery<Float32Array[]>({
queryKey: ['minimapiq', type, account, container, filePath],
queryFn: async ({ signal }) => {
Expand Down
5 changes: 3 additions & 2 deletions client/src/api/metadata/api-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@ import { MetadataClient } from './metadata-client';
import { SigMFMetadata, Annotation, CaptureSegment, Track } from '@/utils/sigmfMetadata';
import { AccountInfo, IPublicClientApplication } from '@azure/msal-browser';
import { AuthUtil } from '@/api/utils/Auth-Utils';
import { AppConfig } from '../config/queries';

export class ApiClient implements MetadataClient {
private authUtil: AuthUtil;

constructor(instance: IPublicClientApplication, account: AccountInfo) {
this.authUtil = new AuthUtil(instance, account);
constructor(instance: IPublicClientApplication, account: AccountInfo, config: AppConfig) {
this.authUtil = new AuthUtil(instance, account, config);
}

async getMeta(account: string, container: string, filePath: string): Promise<SigMFMetadata> {
Expand Down
6 changes: 4 additions & 2 deletions client/src/api/metadata/metadata-client-factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,22 @@ import { LocalClient } from './local-client';
import { MetadataClient } from './metadata-client';
import { FileWithDirectoryAndFileHandle } from 'browser-fs-access';
import { IPublicClientApplication } from '@azure/msal-browser';
import { AppConfig } from '../config/queries';

export const MetadataClientFactory = (
type: string,
files: FileWithDirectoryAndFileHandle[],
dataSources: Record<string, DataSource>,
instance: IPublicClientApplication,
config: AppConfig
): MetadataClient => {
switch (type) {
case CLIENT_TYPE_API:{
if (!instance || !instance.getAllAccounts || instance.getAllAccounts().length === 0) {
return new ApiClient(null, null);
return new ApiClient(null, null, config);
}
const accounts = instance.getAllAccounts();
return new ApiClient(instance, accounts[0]);
return new ApiClient(instance, accounts[0], config);
}
case CLIENT_TYPE_LOCAL:
return new LocalClient(files);
Expand Down
22 changes: 15 additions & 7 deletions client/src/api/metadata/queries.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { MetadataClient } from './metadata-client';
import { useUserSettings } from '@/api/user-settings/use-user-settings';
import { useMsal } from '@azure/msal-react';
import { CLIENT_TYPE_API, SmartQueryResult } from '../Models';
import { useConfigQuery } from '../config/queries';

export const fetchMeta = async (
client: MetadataClient,
Expand All @@ -31,10 +32,11 @@ const updateDataSourceMeta = async (
export const useQueryDataSourceMetaPaths = (type: string, account: string, container: string, enabled = true) => {
const { dataSourcesQuery, filesQuery } = useUserSettings();
const { instance } = useMsal();
const { data: config } = useConfigQuery();
if (!dataSourcesQuery.data || !filesQuery.data) {
return useQuery(['invalidQuery'], () => null);
}
const metadataClient = MetadataClientFactory(type, filesQuery.data, dataSourcesQuery.data, instance);
const metadataClient = MetadataClientFactory(type, filesQuery.data, dataSourcesQuery.data, instance, config);
return useQuery(
['datasource', type, account, container, 'meta', 'paths'],
() => {
Expand All @@ -50,7 +52,8 @@ export const useQueryDataSourceMetaPaths = (type: string, account: string, conta
export const useQueryTrack = (type: string, account: string, container: string, filepath: string, enabled = true) => {
const { dataSourcesQuery, filesQuery } = useUserSettings();
const { instance } = useMsal();
const client = MetadataClientFactory(type, filesQuery.data, dataSourcesQuery.data, instance);
const { data: config } = useConfigQuery();
const client = MetadataClientFactory(type, filesQuery.data, dataSourcesQuery.data, instance, config);

return useQuery<number[][]>({
queryKey: ['track', account, container, filepath],
Expand All @@ -67,7 +70,8 @@ export const getMeta = (type: string, account: string, container: string, filePa
return useQuery(['invalidQuery'], () => null);
}
const { instance } = useMsal();
const metadataClient = MetadataClientFactory(type, filesQuery.data, dataSourcesQuery.data, instance);
const { data: config } = useConfigQuery();
const metadataClient = MetadataClientFactory(type, filesQuery.data, dataSourcesQuery.data, instance, config);
return useQuery(
['datasource', type, account, container, filePath, 'meta'],
() => {
Expand All @@ -88,7 +92,8 @@ export const useUpdateMeta = (meta: SigMFMetadata) => {
const { type, account, container, file_path: filePath } = meta.getOrigin();
const { dataSourcesQuery, filesQuery } = useUserSettings();
const { instance } = useMsal();
const metadataClient = MetadataClientFactory(type, filesQuery.data, dataSourcesQuery.data, instance);
const { data: config } = useConfigQuery();
const metadataClient = MetadataClientFactory(type, filesQuery.data, dataSourcesQuery.data, instance, config);

return useMutation({
mutationFn: (newMeta: SigMFMetadata) => {
Expand All @@ -110,14 +115,16 @@ export const useUpdateMeta = (meta: SigMFMetadata) => {
export const useGetMetadataFeatures = (type: string) => {
const { filesQuery, dataSourcesQuery } = useUserSettings();
const { instance } = useMsal();
const metadataClient = MetadataClientFactory(type, filesQuery.data, dataSourcesQuery.data, instance);
const { data: config } = useConfigQuery();
const metadataClient = MetadataClientFactory(type, filesQuery.data, dataSourcesQuery.data, instance, config);
return metadataClient.features();
};

export const useMeta = (type: string, account: string, container: string, filePath: string) => {
const { filesQuery, dataSourcesQuery } = useUserSettings();
const { instance } = useMsal();
const metadataClient = MetadataClientFactory(type, filesQuery.data, dataSourcesQuery.data, instance);
const { data: config } = useConfigQuery();
const metadataClient = MetadataClientFactory(type, filesQuery.data, dataSourcesQuery.data, instance, config);
return useQuery<SigMFMetadata>({
queryKey: ['datasource', type, account, container, filePath, 'meta'],
queryFn: () => {
Expand All @@ -130,7 +137,8 @@ export const useMeta = (type: string, account: string, container: string, filePa
export const useSmartQueryMeta = (query: string, enabled = true) => {
const { filesQuery, dataSourcesQuery } = useUserSettings();
const { instance } = useMsal();
const metadataClient = MetadataClientFactory(CLIENT_TYPE_API, filesQuery.data, dataSourcesQuery.data, instance);
const { data: config } = useConfigQuery();
const metadataClient = MetadataClientFactory(CLIENT_TYPE_API, filesQuery.data, dataSourcesQuery.data, instance, config);
return useQuery<SmartQueryResult>({
queryKey: ['smart-query', query],
queryFn: ({ signal }) => {
Expand Down

0 comments on commit be54046

Please sign in to comment.