deepseek-1.x-dev/src/Controller/ChatController.php
src/Controller/ChatController.php
<?php
namespace Drupal\deepseek\Controller;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\File\FileUrlGeneratorInterface;
use Drupal\Core\Theme\ThemeManagerInterface;
use Drupal\Core\Url;
/**
* Returns responses for Deep seek routes.
*/
class ChatController extends ControllerBase {
/**
* {@inheritDoc}
*/
public function __construct(
protected FileUrlGeneratorInterface $fileUrlGenerator,
protected ThemeManagerInterface $themeManager,
protected ?ModuleExtensionList $module_handler = NULL,
) {
}
/**
* Builds the response.
*/
public function chat(): array {
$url = Url::fromRoute('deepseek.ai_connect')->toString();
$url_avatar = '';
$logo_path = $this->themeManager->getActiveTheme()->getLogo();
$logo_url = $this->fileUrlGenerator->generateAbsoluteString($logo_path);
$user = $this->entityTypeManager()->getStorage('user')->load($this->currentUser()->id());
if ($user->hasField('user_picture') && $user->get('user_picture')->entity) {
$avatar = $user->get('user_picture')->entity->getFileUri();
$url_avatar = $this->fileUrlGenerator->generateAbsoluteString($avatar);
}
// Render the chat interface.
$build = [
'#theme' => 'chat_template',
'#attached' => [
'library' => [
'deepseek/chat',
],
'drupalSettings' => [
'deepseek' => [
'avatar' => $url_avatar,
'logo_site' => $logo_url,
'url_agent' => $url,
'url_module' => Url::fromUri('base:' . $this->module_handler->getPath('deepseek'), ['absolute' => TRUE])->toString(),
'voice' => $this->config('deepseek.settings')->get('voice'),
'provider' => $this->config('deepseek.settings')->get(key: 'provider'),
],
],
],
];
$loadBootstrap = $this->config('deepseek.settings')->get('bootstrap');
if ($loadBootstrap) {
$build['#attached']['library'][] = 'deepseek/bootstrap';
}
return $build;
}
}
