Example #1
0
    /// <summary>
    ///     <inheritdoc cref="IBungieClient.TryGetDefinitionAsync{T}" />
    /// </summary>
    /// <param name="hash"></param>
    /// <param name="locale"></param>
    /// <param name="success"></param>
    /// <typeparam name="T"></typeparam>
    /// <returns></returns>
    public async ValueTask <bool> TryGetDefinitionAsync <T>(uint hash, BungieLocales locale, Action <T> success)
        where T : IDestinyDefinition
    {
        if (Repository.TryGetDestinyDefinition <T>(hash, locale, out var definition))
        {
            success(definition);
            return(true);
        }

        definition = await DefinitionProvider.LoadDefinition <T>(hash, locale);

        if (definition is null)
        {
            return(false);
        }
        if (_configuration.CacheDefinitions)
        {
            Repository.AddDefinition(locale, definition);
        }
        success(definition);
        return(true);
    }
Example #2
0
    public bool TryGetDefinition <T>(uint hash, BungieLocales locale, out T definition) where T : IDestinyDefinition
    {
        if (Repository.TryGetDestinyDefinition(hash, locale, out definition))
        {
            return(true);
        }

        var defTask = DefinitionProvider.LoadDefinition <T>(hash, locale);

        definition = defTask.GetAwaiter().GetResult();
        if (!defTask.IsCompleted)
        {
            throw new Exception("ValueTask faulted to get result.");
        }
        if (definition is null)
        {
            return(false);
        }
        if (_configuration.CacheDefinitions)
        {
            Repository.AddDefinition(locale, definition);
        }
        return(true);
    }