edupage-api
Version:
Simple node.js package to manage your EduPage account.
279 lines (278 loc) • 8.32 kB
TypeScript
export = Message;
/**
* @typedef {import("../lib/RawData").RawDataObject} RawDataObject
*/
declare class Message extends RawData {
/**
* Parses name of the user
* @static
* @param {string} name Name to parse
* @return {{firstname: string, lastname: string}} Parsed name
* @memberof Message
*/
static parseUsername(name: string): {
firstname: string;
lastname: string;
};
/**
* Creates an instance of Message.
* @param {RawDataObject} [data={}] Raw data to initialize the instance with.
* @param {Edupage} [edupage=null] Edupage instance to use.
* @memberof Message
*/
constructor(data?: RawDataObject, edupage?: Edupage);
/**
* Edupage instance associated to this object.
* @type {Edupage}
*/
edupage: Edupage;
/**
* Timeline item id
* @type {string}
*/
id: string;
/**
* Timeline item type
* @type {string}
*/
type: string;
/**
* Date when the message was created
* @type {Date}
*/
creationDate: Date;
/**
* Date when the message was last updated
* @type {Date}
*/
timelineDate: Date;
/**
* ID of the user who created the message
* @type {string}
*/
otherId: string;
/**
* Number of replies to the message
* @type {number}
*/
repliesCount: number;
/**
* Date of the last reply to the message
* @type {Date}
*/
lastReplyDate: Date;
/**
* Flag indicating whether the message was removed
* @type {boolean}
*/
isRemoved: boolean;
/**
* Flag indicating whether the message is reply
* @type {boolean}
*/
isReply: boolean;
/**
* Flag indicating whether the message is sent as important
* @type {boolean}
*/
isImportant: boolean;
/**
* Date when the currently logged in user read the message. If the message is not important, this is same as `Message.creationDate`.
* @type {Date}
*/
seenDate: Date;
/**
* Flag indicating whether the message was seen. If the message is not important, this will be always `true`.
* @type {boolean}
*/
isSeen: boolean;
/**
* Date when the currently logged in user liked the message.
* @type {Date}
*/
likedDate: Date;
/**
* Flag indicating whether the message was liked.
* @type {boolean}
*/
isLiked: boolean;
/**
* Date when the currently logged in user marked this message as done.
* @type {Date}
*/
doneDate: Date;
/**
* Flag indicating whether the message was marked as done.
* @type {boolean}
*/
isDone: boolean;
/**
* Flag indicating whether the message was starred.
* @type {boolean}
*/
isStarred: boolean;
/**
* Number of likes the message has.
* @type {number}
*/
likes: number;
/**
* The textual content of the message.
* @type {string}
*/
text: string;
/**
* Title of the message.
* @type {string}
*/
title: string;
/**
* Number of participants in the message.
* ! WARNING: This property is only accessible after calling `message.refresh()`!
* @type {number}
*/
participantsCount: number;
/**
* List of participants in the message.
* ! WARNING: This property is only accessible after calling `message.refresh()`!
* @type {(User | Teacher | Student | Parent)[]}
*/
participants: (User | Teacher | Student | Parent)[];
/**
* List of users who liked the message.
* ! WARNING: This property is only accessible after calling `message.refresh()`!
* @type {({user: User | Teacher | Student | Parent, date: Date})[]}
*/
likedBy: {
user: User | Teacher | Student | Parent;
date: Date;
}[];
/**
* List of users who have seen the message.
* ! WARNING: This property is only accessible after calling `message.refresh()`!
* @type {({user: User | Teacher | Student | Parent, date: Date})[]}
*/
seenBy: {
user: User | Teacher | Student | Parent;
date: Date;
}[];
/**
* Author of the message.
* @type {User | Teacher | Student | Parent}
*/
owner: User | Teacher | Student | Parent;
/**
* Recipient of the message.
* @type {User | Teacher | Student | Parent | Plan | Class}
*/
recipient: User | Teacher | Student | Parent | Plan | Class;
/**
* Recipient of the message as user string. This can be used, when the exact recipient is not known (e.g. when the recipient is everyone, this will be '*').
* @type {string}
*/
recipientUserString: string;
/**
* Flag indicating whether the message has no exact recipient (e.g. userstring contains '*').
* @type {boolean}
*/
isWildcardRecipient: boolean;
/**
* Root message of the reply.
* @type {Message}
*/
replyOf: Message;
/**
* Resources attached to the message.
* @type {Attachment[]}
*/
attachments: Attachment[];
/**
* List of replies to the message.
* @type {Message[]}
*/
replies: Message[];
/**
* Assignment attached to the message.
* @type {Assignment}
*/
assignment: Assignment;
/**
* Initializes instance.
* @param {Edupage} [edupage=null] Edupage instance to use.
* @memberof Message
*/
init(edupage?: Edupage): void;
/**
* @typedef {Object} MessageReplyOptions
* @prop {string} text
* @prop {User | Teacher | Student | Parent} [recipient=null]
* @prop {boolean} [parents=false]
* @prop {Attachment[]} [attachments=[]]
*/
/**
* Creates a new reply to the message
* @param {MessageReplyOptions} options
* @memberof Message
*/
reply(options: {
text: string;
recipient?: User | Teacher | Student | Parent;
parents?: boolean;
attachments?: Attachment[];
}): Promise<Message>;
/**
* Marks the message as liked
* @param {boolean} [state=true] State to use (like/unlike)
* @return {Promise<boolean>}
* @memberof Message
*/
markAsLiked(state?: boolean): Promise<boolean>;
/**
* Marks the message as seen
* @return {Promise<void>}
* @memberof Message
*/
markAsSeen(): Promise<void>;
/**
* Marks the message as done
* @param {boolean} [state=true] State to use (done/not done)
* @return {Promise<boolean>}
* @memberof Message
*/
markAsDone(state?: boolean): Promise<boolean>;
/**
* Marks the message as starred
* @param {boolean} [state=true] State to use (starred/not starred)
* @return {Promise<boolean>}
* @memberof Message
*/
markAsStarred(state?: boolean): Promise<boolean>;
/**
* Refreshes message replies and some other fields
* @param {RawDataObject} [data=null] Raw data to use instead of requesting from the server
* @memberof Message
*/
refresh(data?: RawDataObject): Promise<void>;
/**
* Searches for the user object from userstring. If user is not found, the parsed userstring is returned.
* @private
* @param {string} userString Userstring to search for
* @return {{recipient: (User | Teacher | Student | Parent | Plan | Class), wildcard: boolean}} User object and wildcard flag
* @memberof Message
*/
private getRecipient;
}
declare namespace Message {
export { RawDataObject };
}
import RawData = require("../lib/RawData");
import Edupage = require("./Edupage");
import User = require("./User");
import Teacher = require("./Teacher");
import Student = require("./Student");
import Parent = require("./Parent");
import Plan = require("./Plan");
import Class = require("./Class");
import Attachment = require("./Attachment");
import Assignment = require("./Assignment");
type RawDataObject = import("../lib/RawData").RawDataObject;