Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

anonymous-student

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

anonymous-student

Anonymous student is used to retrieve and save information from our website users.

  • 1.1.2
  • latest
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Anonymous-Student

Anonymous student is a client which can be used to save and retrieve information about the student whether the user is logged in or not. This application also implements caching of data to reduce the number of requests made to the StudentAPI. The client is available by subscribing to the AnonymousStudentServiceReady event using the EventAggregationService, please refer to Events for more details.

Table of contents

Usage

All AnonymousStudent interfaces can be installed using

npm install @studyportals/anonymous-student-interfaces

Interface

import { Actor, IStudent, StudentField } from '@studyportals/studentdomain';

interface IAnonymousStudent {
    setStudentData(studentData: IStudent, Actor?: Actor): Promise<void>;
    getStudentData(studentFields: StudentField[]): Promise<IStudent>;
    getStudentDataCompleteness(studentFields: StudentField[]): Promise<number>;
    addDisciplines(ids: number[]): Promise<void>;
    removeDisciplines(ids: number[]): Promise<void>;
    addInterest(type: InterestType, ids: number[]): Promise<void>;
    removeInterest(type: InterestType, ids: number[]): Promise<void>;
    setName(name: string): Promise<void>;
    setGPA(grade_type: string, grade_value: any): Promise<void>;
}

States

The anonymous student application has multiple states which each handle the retrieval and save requests differently.

Pending
In this state, the application does not yet know if the user is logged in or not. To handle this the "Pending" state keeps all request open until it knows if the user is logged in or not. After this, the requests are resolved.

Online
This is the state where the user is logged in. The data will first try to retrieve data from the local cache. If that data is not saved in the local cache (LocalStorage) than it will retrieve data from the student system.

Offline
This state is active whenever the user is not logged in. The data saved will be stored in local storage until the user logs in. When the user logs in, the data is synced to the Online state. After syncing the AnonymousStudentProfileSynced is triggered.

State synchronization

Whenever a new session is created application state will change from Online to Offline. As part of this state change any previously saved data in the Offline state will be synced to the Online state. This will follow the following rules:

Sync state flow

Events

AnonymousStudentServiceReady is triggered when the Anonymous Student Service is ready. A ready-for-use instance of the service is provided as a property of the event. This event has following interface:

interface AnonymousStudentServiceReady {
    static EventType: string;
	eventType: string;

    timestamp: Date;
    anonymousStudentService: IAnonymousStudentService;
}

AnonymousStudentProfileSynced is triggered when information has been synced from the Offline state to the Online state.

interface AnonymousStudentProfileSynced {
    static EventType: string;
	eventType: string;

    timestamp: Date;
    state: StudentRepositoryStateType;
}

AnonymousStudentProfileUpdated is triggered when student information has been updated. This event has following interface:

import { IStudent } from '@studyportals/studentdomain';

interface AnonymousStudentProfileUpdated {
    static EventType: string;
	eventType: string;

    timestamp: Date;
    state: StudentRepositoryStateType;
    changes: IStudent;
}

AnonymousStudentStateChanged is triggered when anonymous student changes its state:

import { StudentRepositoryStateType } from '@studyportals/studentdomain';

interface AnonymousStudentStateChanged {
    static EventType: string;
	eventType: string;

    timestamp: Date;
    oldState: StudentRepositoryStateType;
    newState: StudentRepositoryStateType;
}

Dependencies

EventAggregationService

The above events can be listened to by using the EventAggregationService. Refer to the EventAggregationService documentation for more information on subscribing to domain events.

SessionService

The AnonymousStudent service depends on the SessionService being available. Refer to the SessionService documentation for more information.

StudentDomain

A number of domain interfaces and enums in the Student domain are required for this service. Refer to StudentDomain documentation for more information.

Keywords

FAQs

Package last updated on 09 Feb 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc