mirror of
https://github.com/google/pebble.git
synced 2026-02-19 19:46:50 -05:00
66 lines
2.4 KiB
C
66 lines
2.4 KiB
C
/*
|
|
* Copyright 2024 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#include "nexmo.h"
|
|
#include "ancs_notifications_util.h"
|
|
|
|
#include "comm/ble/kernel_le_client/ancs/ancs.h"
|
|
#include "comm/ble/kernel_le_client/ancs/ancs_types.h"
|
|
|
|
#include "system/logging.h"
|
|
|
|
T_STATIC char* NEXMO_REAUTH_STRING = "Pebble check-in code:";
|
|
|
|
bool nexmo_is_reauth_sms(const ANCSAttribute *app_id, const ANCSAttribute *message) {
|
|
if (ancs_notifications_util_is_sms(app_id)) {
|
|
if (strstr((const char *)message->value, NEXMO_REAUTH_STRING)) {
|
|
PBL_LOG(LOG_LEVEL_INFO, "Got Nexmo Reauth SMS");
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void nexmo_handle_reauth_sms(uint32_t uid,
|
|
const ANCSAttribute *app_id,
|
|
const ANCSAttribute *message,
|
|
iOSNotifPrefs *existing_notif_prefs) {
|
|
const int num_existing_attributes = existing_notif_prefs ?
|
|
existing_notif_prefs->attr_list.num_attributes : 0;
|
|
|
|
AttributeList new_attr_list;
|
|
attribute_list_init_list(num_existing_attributes, &new_attr_list);
|
|
|
|
// Copy over all the existing attributes to our new list
|
|
if (existing_notif_prefs) {
|
|
for (int i = 0; i < num_existing_attributes; i++) {
|
|
new_attr_list.attributes[i] = existing_notif_prefs->attr_list.attributes[i];
|
|
}
|
|
}
|
|
|
|
char msg_buffer[message->length + 1];
|
|
memcpy(msg_buffer, message->value, message->length);
|
|
msg_buffer[message->length] = '\0';
|
|
attribute_list_add_cstring(&new_attr_list, AttributeIdAuthCode, msg_buffer);
|
|
|
|
// This will trigger a sync sending the auth code to the phone
|
|
ios_notif_pref_db_store_prefs(app_id->value, app_id->length,
|
|
&new_attr_list, &existing_notif_prefs->action_group);
|
|
|
|
// Dismiss the notification so the user is oblivious to this process
|
|
ancs_perform_action(uid, ActionIDNegative);
|
|
}
|