import 'package:shared_preferences/shared_preferences.dart';

abstract class UserLocalDataSource {
  Future<void> cacheUserToken(String token);
  Future<String?> getCachedUserToken();
  Future<void> clearCache();
  Future<void> cacheEmployeeId(String id);
  Future<String?> getCachedEmployeeId();
}

class UserLocalDataSourceImpl implements UserLocalDataSource {
  final SharedPreferences sharedPreferences;
  static const String _tokenKey = 'user_token';
  static const String _employeeIdKey = 'employee_id';

  UserLocalDataSourceImpl({required this.sharedPreferences});

  @override
  Future<void> cacheUserToken(String token) async {
    await sharedPreferences.setString(_tokenKey, token);
  }

  @override
  Future<String?> getCachedUserToken() async {
    return sharedPreferences.getString(_tokenKey);
  }

  @override
  Future<void> clearCache() async {
    await sharedPreferences.remove(_tokenKey);
    await sharedPreferences.remove(_employeeIdKey);
  }

  @override
  Future<void> cacheEmployeeId(String id) async {
    await sharedPreferences.setString(_employeeIdKey, id);
  }

  @override
  Future<String?> getCachedEmployeeId() async {
    return sharedPreferences.getString(_employeeIdKey);
  }
}
