@stackend/api
Version:
JS bindings to api.stackend.com
119 lines • 3.61 kB
TypeScript
import { XcapJsonResult, Thunk, XcapOptionalParameters } from '../api';
import type { PaginatedCollection } from '../api/PaginatedCollection';
export declare const COMPONENT_NAME = "like";
export declare const CONTEXT = "like";
/**
* Xcap Like API constants and methods.
*
* @since 20 feb 2017
*/
export interface LikeData {
likes: number;
likedByCurrentUser: boolean;
}
/**
* Maps from id to boolean if the current user likes this id
*/
export declare type LikesByCurrentUser = {
[id: string]: boolean;
};
/**
* Like data map.
* Maps from obfuscated reference to like data.
*/
export declare type LikeDataMap = {
[obfuscatedReference: string]: LikeData;
};
/**
* Get like data for an object given a likes object.
*
* @param likes
* @param object
* @return a like object, never null
*/
export declare function getLikeData(likes: LikeDataMap, object: unknown): LikeData;
export interface LikeResult extends XcapJsonResult {
obfuscatedReference: string;
reference: string;
numberOfLikes: number;
}
/**
* Like an object.
*
* Supply one of the parameters reference or obfuscatedReference.
*
* The new number of likes will be returned.
*
* Only authorized users may like an object.
*/
export declare function like({ obfuscatedReference, reference, context }: {
obfuscatedReference?: string;
reference?: string;
context: string;
} & XcapOptionalParameters): Thunk<Promise<LikeResult>>;
/**
* Remove a like from an object.
*
* Supply one of the parameters reference or obfuscatedReference.
*
* The new number of likes will be returned.
*
*/
export declare function removeLike({ obfuscatedReference, reference, context }: {
obfuscatedReference?: string;
reference?: string;
context: string;
} & XcapOptionalParameters): Thunk<Promise<XcapJsonResult>>;
/**
* Like or remove a like from an object.
*
* Supply one of the parameters reference or obfuscatedReference.
*
* The new number of likes will be returned.
*/
export declare function setLike({ obfuscatedReference, reference, like, context }: {
obfuscatedReference?: string;
reference?: string;
like: boolean;
context?: string;
} & XcapOptionalParameters): Thunk<Promise<XcapJsonResult>>;
export interface LikeObjectAndCount {
object: any;
likes: number;
}
export interface GetLikeToplistResult extends XcapJsonResult {
/** Toplist of liked objects */
toplist: PaginatedCollection<LikeObjectAndCount>;
/** Maps from obfuscated reference like data */
likes: LikeDataMap;
/** Actual interval used */
interval: string;
/** Like creator user id */
creatorUserId: number;
/** Object context */
objectContext: string | null;
/** Object creator user id */
objectCreatorUserId: number;
}
export interface GetToplist extends XcapOptionalParameters {
creatorUserId?: number;
objectCreatorUserId?: number;
interval?: string;
objectType?: string;
objectContext?: string;
p?: number;
pageSize?: number;
}
/**
* Get a toplist of liked objects.
*
* @param creatorUserId get likes by this user
* @param objectCreatorUserId get likes for objects created by this user
* @param interval Time interval (default: 4weeks)
* @param objectType Object class name
* @param objectContext Object context (in current community)
* @param p Page number
* @param pageSize Page size
*/
export declare function getToplist({ creatorUserId, objectCreatorUserId, interval, objectType, objectContext, p, pageSize }: GetToplist): Thunk<Promise<GetLikeToplistResult>>;
//# sourceMappingURL=index.d.ts.map