~aleteoryx/muditaos

ref: 028229a9177e91be0798edeac6a0f12fa27d96fc muditaos/module-apps/application-settings/models/network/SimContactsRepository.hpp -rw-r--r-- 2.5 KiB
028229a9 — Maciej-Mudita [MOS-924] Fix redundant logs about CSQ reporting mode 2 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#pragma once

#include <apps-common/ApplicationCommon.hpp>
#include <module-db/Interface/ContactRecord.hpp>
#include <service-cellular/CellularMessage.hpp>

class AbstractSimContactsRepository
{
  public:
    using OnReadCallback             = std::function<void()>;
    using OnDupplicatesCheckCallback = std::function<void(bool duplicatesFound)>;
    using OnSaveCallback             = std::function<void()>;

    virtual ~AbstractSimContactsRepository() noexcept = default;

    virtual const std::vector<ContactRecord> &getImportedRecords()                                              = 0;
    virtual const std::vector<ContactRecord> &getDuplicatedRecords()                                            = 0;
    virtual void read(OnReadCallback callback)                                                                  = 0;
    virtual void clear()                                                                                        = 0;
    virtual void save(const std::vector<bool> &selectedContacts, bool duplicatesFound, OnSaveCallback callback) = 0;
    virtual void findDuplicates(const std::vector<bool> &selectedContacts, OnDupplicatesCheckCallback callback) = 0;
};

class SimContactsRepository : public AbstractSimContactsRepository, public app::AsyncCallbackReceiver
{
  public:
    using NotificationData = std::pair<db::Query::Type, uint32_t>;
    explicit SimContactsRepository(app::ApplicationCommon *application);

    const std::vector<ContactRecord> &getImportedRecords() override;
    const std::vector<ContactRecord> &getDuplicatedRecords() override;
    void read(OnReadCallback callback) override;
    void clear() override;
    void save(const std::vector<bool> &selectedContacts, bool duplicatesFound, OnSaveCallback callback) override;
    void findDuplicates(const std::vector<bool> &selectedContacts, OnDupplicatesCheckCallback callback) override;
    void updateImportedRecords(const std::vector<cellular::SimContact> &simData);

  protected:
    void sendNotification(const NotificationData &notificationData);

  private:
    std::vector<ContactRecord> importedRecords;
    std::vector<ContactRecord> uniqueRecords;
    std::vector<ContactRecord> duplicatedRecords;
    app::ApplicationCommon *application;

#if DEBUG_SIM_IMPORT_DATA == 1
    void printRecordsData(const std::string &name, const std::vector<ContactRecord> &data);
#endif
};