from flask import Flask
from config import Config
from flask_login import LoginManager
import os

login = LoginManager()
login.login_view = 'auth.login'
login.login_message = 'Please log in to access this page.'

def create_app(config_class=Config):
    app = Flask(__name__)
    app.config.from_object(config_class)

    login.init_app(app)

    # Context processor to inject global variables
    @app.context_processor
    def inject_conf_var():
        return dict(
            STRIPE_PUBLIC_KEY=app.config['STRIPE_PUBLIC_KEY'],
            GLOBAL_APP_NAME="SongBoss Panel"
        )

    from app import db
    db.init_app(app)
    
    # Register Blueprints
    from app.routes import bp as main_bp
    app.register_blueprint(main_bp)

    from app.stripe_routes import stripe_bp
    app.register_blueprint(stripe_bp)

    return app
