in src/amo/reducers/versions.js [144:262]
name: selectLocalizedContent(version.license.name, lang),
text:
version.license.text === undefined
? undefined
: selectLocalizedContent(version.license.text, lang),
url: version.license.url,
}
: null,
file: version.file,
releaseNotes: selectLocalizedContent(version.release_notes, lang),
version: version.version,
};
};
type FetchVersionParams = {|
errorHandlerId: string,
slug: string,
versionId: VersionIdType,
|};
export type FetchVersionAction = {|
type: typeof FETCH_VERSION,
payload: FetchVersionParams,
|};
export const fetchVersion = ({
errorHandlerId,
slug,
versionId,
}: FetchVersionParams): FetchVersionAction => {
invariant(errorHandlerId, 'errorHandlerId is required');
invariant(slug, 'slug is required');
invariant(versionId, 'versionId is required');
return {
type: FETCH_VERSION,
payload: { errorHandlerId, slug, versionId },
};
};
type FetchVersionsParams = {|
errorHandlerId: string,
page?: string,
slug: string,
|};
export type FetchVersionsAction = {|
type: typeof FETCH_VERSIONS,
payload: FetchVersionsParams,
|};
export const fetchVersions = ({
errorHandlerId,
page = '1',
slug,
}: FetchVersionsParams): FetchVersionsAction => {
invariant(errorHandlerId, 'errorHandlerId is required');
invariant(slug, 'slug is required');
return {
type: FETCH_VERSIONS,
payload: { errorHandlerId, page, slug },
};
};
type LoadVersionsParams = {|
slug: string,
versions: Array<ExternalAddonVersionType>,
|};
type LoadVersionsAction = {|
type: typeof LOAD_VERSIONS,
payload: LoadVersionsParams,
|};
export const loadVersions = ({
slug,
versions,
}: LoadVersionsParams): LoadVersionsAction => {
invariant(slug, 'slug is required');
invariant(versions, 'versions is required');
return {
type: LOAD_VERSIONS,
payload: { slug, versions },
};
};
type GetVersionByIdParams = {|
id: VersionIdType,
state: VersionsState,
|};
export const getVersionById = ({
id,
state,
}: GetVersionByIdParams): AddonVersionType | null => {
invariant(id, 'id is required');
invariant(state, 'state is required');
const version = state.byId[id];
return version || null;
};
type GetBySlugParams = {|
slug: string,
state: VersionsState,
|};
export const getVersionsBySlug = ({
slug,
state,
}: GetBySlugParams): Array<AddonVersionType> | null => {
invariant(slug, 'slug is required');
invariant(state, 'state is required');
const infoForSlug = state.bySlug[slug];
if (infoForSlug && infoForSlug.versionIds) {
return infoForSlug.versionIds.map((versionId) => {