Refactoring: Object in provider need to define in conmponent?


#1

Hello, I’m trying to refactor this because I think it can be cleaner but I’m not sure how. It’s about the ‘notification’ object.

I have this provider, which defines the possible notifications (/errors):

import {Injectable} from '@angular/core';

@Injectable()
export class GlobalProvider {
    notification: object;

    constructor() {
        this.notification = {
            internal: {
                image: 'assets/img/interne-fout.svg',
                title: 'Er is een interne fout',
                content: 'Probeer het opnieuw, als het probleem aanhoudt neem contact op'
            },
            internet: {
                image: 'assets/img/geen-data.svg',
                title: 'Je hebt geen verbinding',
                content: 'Check je internetconnectie en probeer het nogmaals'
            }
        };
    }

    isOnline() {
        return navigator.onLine;
    }
}

In my component I have this.

    notification: object = {image: '', title: '', content: ''};


/**
         * Only do request when online.
         */
        if (globalProvider.isOnline()) {
            this.sendHTTPRequest();
        } else {
            this.notification = globalProvider.notification['internet'];
        }

        /**
         * Watch for reconnect after disconnect.
         */
        this.network.onConnect().subscribe(() => {
            this.sendHTTPRequest();
            this.notification = {image: '', title: '', content: ''};
        });

Is there any better way to do this? I don’t like the redefining the structure of notification in the component part. Feels wrong somehow.